Thinkphp5使用Elasticsearch

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,多条件的列表查询筛选应该是够了

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThinkPHP6 中使用 ElasticSearch 需要先安装 ElasticSearchElasticsearch for PHP,具体安装步骤请参考前面的回答。 安装完成后,我们可以在代码中使用 Elasticsearch for PHP 提供的 API 进行数据的增删改查操作。下面是一个简单的示例: ```php <?php namespace app\controller; use Elasticsearch\ClientBuilder; use think\facade\Db; class Index { public function search() { $client = ClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'title' => 'ElasticSearch' ] ] ] ]; $response = $client->search($params); return json($response); } public function add() { $data = Db::table('my_table')->find(); $client = ClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => $data['id'], 'body' => [ 'title' => $data['title'], 'content' => $data['content'], ] ]; $response = $client->index($params); return json($response); } public function update() { $client = ClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id', 'body' => [ 'doc' => [ 'title' => 'new title', ] ] ]; $response = $client->update($params); return json($response); } public function delete() { $client = ClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; $response = $client->delete($params); return json($response); } } ``` 这里我们定义了四个方法,分别是 `search`、`add`、`update` 和 `delete`。 `search` 方法用于查询数据,我们在查询中使用了 `match` 查询,查询了 `title` 字段中包含 `ElasticSearch` 关键字的文档。 `add` 方法用于添加数据,我们使用了 `index` 方法,将 `my_table` 表中的数据添加到了名为 `my_index`,类型为 `my_type` 的文档中。 `update` 方法用于更新数据,我们使用了 `update` 方法,将 ID 为 `my_id` 的文档中的 `title` 字段更新为了 `new title`。 `delete` 方法用于删除数据,我们使用了 `delete` 方法,删除了 ID 为 `my_id` 的文档。 这只是一个简单的示例,实际使用中需要根据业务需求进行更详细的配置和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值