Thinkphp5使用Elasticsearch
使用的阿里云Elasticsearch服务,免去安装步骤
1.tp项目中安装Elasticsearch-php插件 ,composer安装
安装版本与elasticsearch版本一致,我这边elasticsearch7.7.1,安装elasticsearch-php 7.0 ,大版本一致的情况下DSL语法不会有很大差别.
2.项目中引入
3.使用(新建索引,映射索引,插入索引文档,查询索引文档,更新索引文档)
a.新建索引(相当于mysql新建库)
number_of_shards 主分片数 (默认值5)
number_of_replicas 副本分片数(默认值1)
这两个值取决于elasticsearch的节点数,一般elasticsearch集群多服务器多节点,没配置过,所以阿里云的服务很方便.
max_result_window 返回最大记录数
b.映射索引(相当于mysql表格新增字段,type对应一张表,es7.0之后已经不支持index对应多个type了)
需要作为查询字段的字符串设置为text,并设置分词ik_smart,分词插件需要另外安装,然后网上查询分词库,导入.
筛选字段设置为integer,时间筛选我转为int时间戳类型来筛选,elasticsearch也支持的date类型的字段筛选.
Keyword类型可作为关键字匹配,分类筛选时可整词匹配.
c.插入索引文档(相当于向mysql表里面插入数据)
id我取的数据库的主键id,必须唯一
d.查询
筛选查询 bool查询里使用filter
如果需要多个筛选字段,filter里面嵌套bool查询,must必须满足,must里面套多个range数组
track_total_hits 返回所有满足记录数
Size 和 from 分页
Sort 排序 $sort排序字段
整词匹配查询(可以做到整词匹配,我这边将分类设置为keyword,可以作为分类筛选,int型也可整词匹配,比如单独匹配值为1的)
bool查询 match匹配,同时满足多个匹配,就是组装多个match数组,类似range
模糊查询,bool查询里must和should同时使用需要设置minimum_should_match为1
这都是最基本的搜索DSL,多条件的列表查询筛选应该是够了