Laravel 基于 Scout 配置实现 Elasticsearch (一)- 准备工作
导语
全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍
Laravel Scout 为 Eloquent 模型全文搜索实现提供了简单的、基于驱动的解决方案。通过使用模型观察者,Scout 会自动同步更新模型记录的索引。
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。[5]根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
新建测试数据
新建 fake_articles
用来测试
- 新建模型以及数据迁移
php artisan make:model Models/FakeArticle -m
- 在数据迁移中
database/migrations/2019_06_13_095420_create_fake_articles_table.php
编辑如下
public function up() { Schema::create('fake_articles', function (Blueprint $table) { $table->increments('id'); $table->string('author', 20)->comment('作者'); $table->string('title', 200)->comment('标题'); $table->text('content')->comment('内容'); $table->timestamps(); }); }
- 运行迁移
php artisan migrate
- 新建数据填充
php artisan make:seeder FakeArticlesSeeder
- 填充几条中文数据,以便后续测试
public function run() { \App\Models\FakeArticle::insert([ [ 'author' => '王二', 'title' => '黄金时代', 'content' => '那一天我二十一岁,在我一生的黄金时代,我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样。可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去,什么也锤不了我。', 'created_at' => now(), 'updated_at' => now(), ], ['author' => '陈辉', 'title' => '绿毛水怪', 'content' => '大团的蒲公英浮在街道的河流口,吞吐着柔软的针一样的光,我们好像在池塘的水底,从一个月亮走向另一个月亮。', 'created_at' => now(), 'updated_at' => now(), ], ['author' => '迅哥', 'title' => '社戏', 'content' => '两岸的豆麦和河底的水草所发散出来的清香,夹杂在水气中扑面的吹来;月色便朦胧在这水气里。淡黑的起伏的连山,仿佛是踊跃的铁的兽脊似的,都远远的向船尾跑去了,但我却还以为船慢。他们换了四回手,渐望见依稀的赵庄,而且似乎听到歌吹了,还有几点火,料想便是戏台,但或者也许是渔火。', 'created_at' => now(), 'updated_at' => now(), ] ]); }
- 运行填充
php artisan db:seed --class=FakeArticlesSeeder
搭建 Elasticsearch 容器
laradock 中支持 Elasticsearch,直接搭建就可以,省去了诸多麻烦
- 切换到
laradock
目录 docker-compose build elasticsearch
docker-compose up -d elasticsearch
- 进入容器中
docker-compose exec elasticsearch bash
- 安装 ik 插件,注意要和 elasticsearch 版本相同,在
elasticsearch/Dockerfile
中可以查看版本./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
- 退出容器后重启
docker-compose restart elasticsearch
参考资料:Laravel Scout、ik
相关推荐
newbornzhao 2020-09-14
做对一件事很重要 2020-09-07
renjinlong 2020-09-03
明瞳 2020-08-19
李玉志 2020-08-19
mengyue 2020-08-07
molong0 2020-08-06
AFei00 2020-08-03
molong0 2020-08-03
wenwentana 2020-08-03
YYDU 2020-08-03
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。
sifeimeng 2020-08-03
心丨悦 2020-08-03
liangwenrong 2020-07-31
sifeimeng 2020-08-01
mengyue 2020-07-30
tigercn 2020-07-29
IceStreamLab 2020-07-29