官方下載 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 官網介紹

最後修改日期: 2020 年 12 月 1 日