Laravel6 使用 Elastic7.10

php_yt發表於2020-12-02

laravel 中使用 ES,一種是使用 ES 官方 Elasticsearch-PHP;一種是使用 laravel 官方擴充套件 Scout 。上一篇我安裝了 ES7.10,我希望這兩種方式都能夠使用。本篇介紹我學習中的版本選擇和一些實際經驗。

本文環境:CentOS7.6 /Laravel6.0 /PHP7.2.3

Elasticsearch-PHP:

因為我希望以後能夠使用 Elasticsearch-PHP,因此首先保證 elasticsearch/elasticsearch 的版本與 ES 版本一致。
它的文件在

Laravel6 使用 Elastic7.10

Laravel6 使用 Elastic7.10

Laravel6 使用 Elastic7.10

在安裝部分,它要求 PHP 7.1.0 or higher,並且

Laravel6 使用 Elastic7.10

因此我直接拉取 elasticsearch/elasticsearch 的最新版本即可。

composer require elasticsearch/elasticsearch
"elasticsearch/elasticsearch": "~7.0"

Scout

Laravel Scout 為 Eloquent 模型的全文搜尋提供了基於驅動的簡單的解決方案。這時候我們需要提供一個連線 ES 的驅動 tamayo/laravel-scout-elastic

Laravel6 使用 Elastic7.10

由於要相容 elasticsearch/elasticsearch 的版本,所以只能選擇 8.1/8.0 版本。
直接拉取最新版本即可,同時注意要求 PHP 版本 >= 7.2,laravel/scout >=8.0 。而 laravel/scout 8.0 版本不再支援 Laravel5.x ,這也是我選擇 Laravel6.0 版本的原因。那麼,直接拉取最新的版本即可。

composer require laravel/scout
"laravel/scout": "^8.4",
composer require tamayo/laravel-scout-elastic
"tamayo/laravel-scout-elastic": "^8.0"

scout 配置

Scout 全文搜尋《Laravel 6 中文文件》
github.com/ErickTamayo/laravel-sco...
通過文件比較容易的完成配置,補充的是 ES7.10 放棄了 type,所以與大多看了網上的舊版教程配置是不太一樣的,預設的 type 名稱是 _doc 。如果和我一樣對 ES 不太熟悉,配置完成後,可直接 php artisan scout:import "App\Post" 。如以下匯入資料後,通過 http://xxx.com:9200/hots_index/_doc/1 檢索到 id=1 的資料。

#Model;

use Searchable;
public function searchableAs() {
    return 'hots_index'; // 這並非type,而是索引名稱
}
#config/scout.php

'elasticsearch' => [
        // 這裡已經沒有了index名稱的配置
        'hosts' => [
            [
                'host'   => env('ELASTICSEARCH_HOST', '127.0.0.1'),
                'port'   => env('ELASTICSEARCH_PORT', '9200'),
            ]
        ],
]
本作品採用《CC 協議》,轉載必須註明作者和本文連結
focus

相關文章