Elasticsearch 7.2 在 Laravel 中實踐

mution發表於2019-09-03

背景:
最近在laradock中安裝了Elasticsearch7.2版本,本來試用elasticquent/Elasticquent 擴充套件,但是發現其對應的Elasticsearch版本是6.1,而官方推薦的ErickTamayo/laravel-scout-elastic對應的還是5.0版本,所以在github找到babenkoivan/scout-elasticsearch-driver擴充套件進行Es的實踐。
實踐

  1. Elasticsearch-ik中文分詞外掛安裝
    安裝命令:elasticsearch-plugin install https://github.com/medcl/elasticsearch-ana...
    此處有網友推薦在elasticsearch的dockfile中新增該命令,實操後發現總是安裝失敗,所以在安裝完並啟動Elasticsearch容器後,進入該容器執行該命令,安裝成功,問題在於重新構建容器後需要再次執行該操作
  2. babenkoivan/scout-elasticsearch-driver擴充套件使用
    首先按照該擴充套件的文件進行擴充套件的引用及相關配置檔案的生成:在env中新增
    SCOUT_DRIVER=elastic

    然後執行命令

    php artisan make:index-configurator MyIndexConfigurator
    php artisan make:searchable-model MyModel --index-configurator=MyIndexConfigurator

    以上兩個命令用於生成模型檔案及模型相關配置檔案:
    $mapping 欄位屬性的定義需要增加analyzer和search_analyzer兩個屬性,用於傳入ik的分詞引數

    'content' => [
                'type' => 'text',
                'analyzer' => 'ik_max_word',
                'search_analyzer' => 'ik_smart',
            ],

    最後執行

    php artisan elastic:create-index "App\MyIndexConfigurator"
    php artisan elastic:update-mapping "App\MyModel"
    php artisan scout:import "App\MyModel"

    以上三個命令分別用於建立index,更新對應模型index的mapping,最後倒入已有資料到該模型的index 中

  3. 在模型中呼叫
    App\MyModel::search('phone') ->get();

    還有很多模型上的方法及規則可以按情況使用,具體參考文件操作

  4. 查詢已有的index
    [GET]    http://localhost:9200/model_index
  5. 查詢已有的mapping
    [GET]   http://localhost:9200/_mapping
  6. 刪除已有的index
    [DELETE]   http://localhost:9200/model_index

相關文章