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

最后總結,簡單使用,可以這樣,如果有其它復雜要求的話,可以自行設置!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM