在 Laravel 中使用 Elasticsearch的基本配置

2019年3月28日 作者 张舫

1.引入composer扩展包

2.配置

config/database.php

.env

.env.example

3.服务注册初始化 Elasticsearch 对象

app/Providers/AppServiceProvider.php

4.创建索引

由于查询的不支持嵌套,注意看 skus.title 字段的定义里加入了 copy_to 参数,值是 skus_title,Elasticsearch 就会把这个字段值复制到 skus_title 字段里, skus_title 这个字段不需要自己手动创建,这样就可以在 multi_match 的 fields 里通过 skus_title 来匹配。skus.description 和 properties.name 同理。

创建成功返回

5.测试

6.将数据转化为数组,准备填充到索引当中

填充格式↓

7.创建命令调用toESArray方法,一键填充到Elasticsearch

app/Console/Commands/Elasticsearch/SyncProducts.php

执行命令

查看导入的数据

8.创建队列时时更新数据

app/Jobs/SyncOneProductToES.php

在更改数据的地方使用队列

app/Admin/Controllers/CommonProductsController.php

执行队列更新商品数据,测试一下