laravel 中使用 ES,一種是使用 ES 官方 Elasticsearch-PHP;一種是使用 laravel 官方擴充套件 Scout 。上一篇我安裝了 ES7.10,我希望這兩種方式都能夠使用。本篇介紹我學習中的版本選擇和一些實際經驗。
本文環境:CentOS7.6 /Laravel6.0 /PHP7.2.3
Elasticsearch-PHP:
因為我希望以後能夠使用 Elasticsearch-PHP
,因此首先保證 elasticsearch/elasticsearch
的版本與 ES
版本一致。
它的文件在
在安裝部分,它要求 PHP 7.1.0 or higher
,並且
因此我直接拉取 elasticsearch/elasticsearch 的最新版本即可。
composer require elasticsearch/elasticsearch
"elasticsearch/elasticsearch": "~7.0"
Scout
Laravel Scout 為 Eloquent 模型的全文搜尋提供了基於驅動的簡單的解決方案。這時候我們需要提供一個連線 ES
的驅動 tamayo/laravel-scout-elastic。
由於要相容 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 協議》,轉載必須註明作者和本文連結