laravel-elasticsearch 全文搜索设置
Posted ❦火鸟网络
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel-elasticsearch 全文搜索设置相关的知识,希望对你有一定的参考价值。
1、首先安装 jave环境 jdk 下载地址 ,我用的是最新版本的,有时版本要跟elasticsearch对应
2、安装elasticsearch 下载地址
3、安装Laravel scout 全文搜索包,这里我用的是5.0.3版本,tamayo/laravel-scout-elastic .这里的版本很重要,不然一会就出错了!
composer require laravel/scout=5.0.3
生成配置文件
php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"
这样,scout就安装完了,这可以参考官方教程
4、因为要使用es做搜索引擎,所以我们要用到一个叫tamayo/laravel-scout-elastic的包。4.0对应5.0.3不要搞错!
composer require tamayo/laravel-scout-elastic=4.0
5、添加服务提供器到config/app.php的providers数组中
// config/app.php ‘providers‘ => [ ... ScoutEnginesElasticsearchElasticsearchProvider::class, ],
6、配置。在config/scout.php文件中添加如下代码。默认使用的是algolia引擎,我们要使用es做引擎
‘driver‘ => env(‘SCOUT_DRIVER‘, ‘elasticsearch‘), ‘elasticsearch‘ => [ ‘index‘ => env(‘ELASTICSEARCH_INDEX‘, ‘你的索引名‘), ‘hosts‘ => [ env(‘ELASTICSEARCH_HOST‘, ‘http://127.0.0.1:9200‘), ], ],
7、建立model 并配置
<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use LaravelScoutSearchable; //一定要有,自动生成没有的 class Article extends Model { // use Searchable; //一定要有 // 定义索引里面的类型,上文我们说过,可以把type理解成一个数据表。我们现在要做的就是把我们所有的要全文搜索的字段都存入到es中的一个叫‘_doc‘的表中。 public function searchableAs() { return ‘articles‘; } // 定义有那些字段需要搜索 public function toSearchableArray() { return [ ‘user_title‘ => $this->title, //user_name加上前缀以区别。因为不同的表里可能会有相同的字段。mysql中的字段是name,email,created_at。在es中我们存储的user_name,user_email,user_created_at。是可以自定义的。 ‘user_description‘ => $this->description, ]; } }
8、导入数据,其实看官方的那个文档,来增、更、删除也可以的。主要是配置好es就好了
php artisan scout:import "AppModelsArticle"
9、按官方scout的来使用搜索就可以了,例如
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppModelsArticle; class TestController extends Controller { public function test($value=‘‘) { return Article::search(‘ic‘)->paginate(5); } }
最后总结,简单使用,可以这样,如果有其它复杂要求的话,可以自行设置!
以上是关于laravel-elasticsearch 全文搜索设置的主要内容,如果未能解决你的问题,请参考以下文章