laravel-elasticsearch 全文搜索设置
程序员文章站
2022-03-24 12:54:36
1、首先安装 jave环境 jdk 下载地址 ,我用的是最新版本的,有时版本要跟elasticsearch对应 2、安装elasticsearch 下载地址 3、安装Laravel scout 全文搜索包,这里我用的是5.0.3版本,tamayo/laravel-scout-elastic .这里的 ......
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="laravel\scout\scoutserviceprovider"
这样,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' => [ ... scoutengines\elasticsearch\elasticsearchprovider::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 app\models; use illuminate\database\eloquent\model; use laravel\scout\searchable; //一定要有,自动生成没有的 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 "app\models\article"
9、按官方scout的来使用搜索就可以了,例如
<?php namespace app\http\controllers; use illuminate\http\request; use app\models\article; class testcontroller extends controller { public function test($value='') { return article::search('ic')->paginate(5); } }
最后总结,简单使用,可以这样,如果有其它复杂要求的话,可以自行设置!
下一篇: ES6 Generator async