1、首先安装 jave环境 jdk 下载地址 ,我用的是最新版本的,有时版本要跟elasticsearch对应

2、安装elasticsearch 下载地址

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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);
    }
}

最后总结,简单使用,可以这样,如果有其它复杂要求的话,可以自行设置!

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄