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 全文搜索设置的主要内容,如果未能解决你的问题,请参考以下文章

商品搜素

全文检索工具都有哪些?

使用chromedriver实现豆瓣网页的全网页截图

Elasticsearch(全文搜索)

Elasticsearch(全文搜索)

Flask 教程 第十六章:全文搜索