laravel 中使用 elasticsearch
安装 elasticsearch 和 kibana(用来查看管理elasticsearch中的数据)
参照:https://blog..net/z_ruitao/article/details/105043521
安装 scout
composer require laravel/scout # 在config/app.php 的 providers 数组中添加 LaravelScoutScoutServiceProvider::class # 执行命令发布配置文件 php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider
注:如果按照 scout 失败,根据错误信息判断是因为版本过高不兼容,可通过安装低版本来解决
安装 laravel-scout-elastic
composer require tamayo/laravel-scout-elastic # 在 config/app.php 的 providers 数组中添加 ScoutEnginesElasticsearchElasticsearchProvider::class
修改配置文件 scout.php
driver => env(SCOUT_DRIVER, elasticsearch), //配置elasticsearch引擎 elasticsearch => [ index => env(ELASTICSEARCH_INDEX, es_index),//es_index就是索引的名字,根据实际情况来取名 hosts => [ env(ELASTICSEARCH_HOST, http://127.0.0.1:9200), ], ]
在 model 中使用
在 model 类中引用 Searchable
use LaravelScoutSearchable; # 命名空间 use Searchable;
重写 searchableAs () 方法 toSearchableArray () 方法
/** * 获取模型的可搜索数据 * @return array */ public function toSearchableArray() { $data = [ id => $this->id, name => $this->name ]; return $data; } // 搜索的type public function searchableAs() { return "_doc"; }
导入已存在表中的数据
php artisan scout:import "AppModelCate"
调用
$article = Cate::search($this->argument(query))->get();
之后通过模型创建的数据都会自动同步到 elasticsearch
参考:
- https://learnku.com/articles/40289
- https://learnku.com/articles/25179
上一篇:
IDEA上Java项目控制台中文乱码