至 官方下載 Elasticsearch 下載 Windows 版,下載後解壓縮並執行 bin/elasticsearch.bat,Synology NAS 請參考 Synology NAS – 安裝 Elasticsearch 全文搜尋伺服器。
到 Kaizen – 下載 ElasticSearch GUI for Windows 工具,下載後解壓縮並執行kaizen.bat,點擊 Server 選項,新增 http://localhost:9200 後,點擊 Connections。
安裝套件
# 安裝 Laravel Scout
composer require laravel/scout
# 產生 Laravel Scout 設定檔
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
# 安裝 Elasticsearch 驅動 Driver
composer require babenkoivan/scout-elasticsearch-driver
# 產生 Scout Elasticsearch 設定檔
php artisan vendor:publish --provider="ScoutElastic\ScoutElasticServiceProvider"
修改 .env
SCOUT_DRIVER=elastic
SCOUT_QUEUE=false
SCOUT_ELASTIC_HOST=localhost:9200
建立索引
ElasticSearch 必須先替資料表建立索引,所以每個可搜索的模型都需要有自己的索引配置器。(這邊以台北市公園資料為例)
php artisan make:index-configurator Es/ParksIndexConfigurator
php artisan elastic:create-index App\Es\ParksIndexConfigurator
修改模型 App\Park.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Es\ParksIndexConfigurator;
use ScoutElastic\Searchable;
class Park extends Model
{
use Searchable;
protected $table='parks';
//可新增編輯的欄位名稱
protected $fillable = [
'name', 'engname', 'overview', 'lat', 'lon',
'dist', 'location', 'type', 'area', 'unit',
'onlinedate', 'offlinedate', 'isshow', 'istop', 'sort'
];
//使用es配置
protected $indexConfigurator = ParksIndexConfigurator::class;
//對應可搜尋的欄位
protected $mapping = [
'properties' => [
'name' => [
'type' => 'text',
],
'overview' => [
'type' => 'text',
],
]
];
//將資料寫入Elasticsearch host
public function toSearchableArray()
{
return [
'name'=> $this->name,
'overview' => strip_tags($this->overview),
];
}
}
導入現有資料
php artisan scout:import "App\Park"
確認資料是否導入?
其餘實作部分請參考 Laravel 官網介紹