Laravel 基於 Scout 配置實現 Elasticsearch (一)- 準備工做

導語

全文搜索是很重要的功能,實現的方式也有不少種。如下經過 Laravel Scout 和 Elasticsearch 實現。先來看下各自的介紹php

Laravel Scout 爲 Eloquent 模型全文搜索實現提供了簡單的、基於驅動的解決方案。經過使用模型觀察者,Scout 會自動同步更新模型記錄的索引。
Elasticsearch是一個基於Lucene庫的搜索引擎。它提供了一個分佈式、支持多租戶的全文搜索引擎,具備HTTP Web接口和無模式JSON文檔。Elasticsearch是用Java開發的,並在Apache許可證下做爲開源軟件發佈。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其餘語言中都是可用的。[5]根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜索引擎,其次是Apache Solr,也是基於Lucene。

新建測試數據

新建 fake_articles 用來測試html

  1. 新建模型以及數據遷移 php artisan make:model Models/FakeArticle -m
  2. 在數據遷移中 database/migrations/2019_06_13_095420_create_fake_articles_table.php 編輯以下
public function up()
{
    Schema::create('fake_articles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('author', 20)->comment('做者');
        $table->string('title', 200)->comment('標題');
        $table->text('content')->comment('內容');
        $table->timestamps();
    });
}
  1. 運行遷移 php artisan migrate
  2. 新建數據填充 php artisan make:seeder FakeArticlesSeeder
  3. 填充幾條中文數據,以便後續測試
public function run()
{
    \App\Models\FakeArticle::insert([
        [
            'author' => '王二',
            'title' => '黃金時代',
            'content' => '那一天我二十一歲,在我一輩子的黃金時代,我有好多奢望。我想愛,想吃,還想在一瞬間變整天上半明半暗的雲,後來我才知道,生活就是個緩慢受錘的過程,人一每天老下去,奢望也一每天消逝,最後變得像捱了錘的牛同樣。但是我過二十一歲生日時沒有預見到這一點。我以爲本身會永遠生猛下去,什麼也錘不了我。',
            'created_at' => now(),
            'updated_at' => now(),
        ],
        ['author' => '陳輝',
            'title' => '綠毛水怪',
            'content' => '大團的蒲公英浮在街道的河流口,吞吐着柔軟的針同樣的光,咱們好像在池塘的水底,從一個月亮走向另外一個月亮。',
            'created_at' => now(),
            'updated_at' => now(),
        ],
        ['author' => '迅哥',
            'title' => '社戲',
            'content' => '兩岸的豆麥和河底的水草所發散出來的清香,夾雜在水氣中撲面的吹來;月色便朦朧在這水氣裏。淡黑的起伏的連山,彷彿是踊躍的鐵的獸脊似的,都遠遠的向船尾跑去了,但我卻還覺得船慢。他們換了四回手,漸望見依稀的趙莊,並且彷佛聽到歌吹了,還有幾點火,料想即是戲臺,但或者也許是漁火。',
            'created_at' => now(),
            'updated_at' => now(),
        ]
    ]);
}
  1. 運行填充 php artisan db:seed --class=FakeArticlesSeeder

搭建 Elasticsearch 容器

laradock 中支持 Elasticsearch,直接搭建就能夠,省去了諸多麻煩laravel

  1. 切換到 laradock 目錄
  2. docker-compose build elasticsearch
  3. docker-compose up -d elasticsearch
  4. 進入容器中 docker-compose exec elasticsearch bash
  5. 安裝 ik 插件,注意要和 elasticsearch 版本相同,在 elasticsearch/Dockerfile 中能夠查看版本 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

安裝插件

  1. 退出容器後重啓 docker-compose restart elasticsearch

參考資料:Laravel Scoutikgit

相關文章
相關標籤/搜索