LaravelでScoutを利用したElasticsearch検索エンジンの統合


前に書く
Elasticsearch(以下esと略称する)は、リアルタイムの分散検索および分析エンジンです.
検索エンジンでは、Elasticsearchだけでなく、別のAlgolia、sphinx、Solrなどがありますが、ここでは評価や比較はせず、laravelでElasticsearchをどのように使うかを紹介します.
優先的にはElasticsearchをインストールする必要があります.参照してください.https://www.tech1024.cn/origi... .
本稿はlaravel 5に基づく.5、その他のバージョンは大同小異です.
準備作業
composerによる依存パッケージのインストール
composer require laravel/scout
composer require tamayo/laravel-scout-elastic

基本構成
config/app.phpファイルのproviders配列にサービスプロバイダを追加
// config/app.php
'providers' => [
    // ...
    Laravel\Scout\ScoutServiceProvider::class,
    // ...
    ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],

次のコマンドを使用してscoutプロファイルを生成します.
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

ここではphpにelasticsearchを追加する構成
    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
        ],
    ],

開いてみましょうEnvファイル、scoutとelasticsearchの構成を追加
# scout  
SCOUT_DRIVER=elasticsearch
SCOUT_PREFIX=

# elasticsearch   
ELASTICSEARCH_INDEX=esdemo
# elasticsearch   
ELASTICSEARCH_HOST=http://172.30.6.1:9200

索引の作成
モデルの作成とデータの移入
モデルapp/studentを作成します.php、後続のテストを容易にするために、まず表を作成してデータを埋めてください.sql文を手動で使用してデータを追加したり、laravelを使用して自動的にデータの移行と埋め込みをしたりすることができます.参考にしてください.https://www.tech1024.cn/origi...
toArray();

        // Customize array...

        return $array;
    }
}

すべての既存レコードを検索インデックスにインポート
php artisan scout:import "App\Student"

導入に成功したのではないでしょうか.
php artisan scout:import "App\Student"

Imported [App\Student] models up to ID: 500
Imported [App\Student] models up to ID: 1000
Imported [App\Student] models up to ID: 1500
Imported [App\Student] models up to ID: 2000
Imported [App\Student] models up to ID: 2500
Imported [App\Student] models up to ID: 3000
Imported [App\Student] models up to ID: 3500
Imported [App\Student] models up to ID: 4000
Imported [App\Student] models up to ID: 4500
Imported [App\Student] models up to ID: 5000
Imported [App\Student] models up to ID: 5500
Imported [App\Student] models up to ID: 6000
Imported [App\Student] models up to ID: 6500
Imported [App\Student] models up to ID: 7000
Imported [App\Student] models up to ID: 7500
Imported [App\Student] models up to ID: 8000
Imported [App\Student] models up to ID: 8500
Imported [App\Student] models up to ID: 9000
Imported [App\Student] models up to ID: 9500
Imported [App\Student] models up to ID: 10000
All [App\Student] records have been imported.

私たちはesにアクセスし、http://172.30.6.1:9200/esdemo/students_index/_search
導入したばかりのstudentsがあるのではないでしょうか.indexインデックスデータ
大功を成し遂げる
$studens = App\Student::search('  ')->get();
dd($studens);

百万個のデータを入力してみて、検索速度は、直接データベースを検索するよりもずっと速いのではないでしょうか.
詳細については、公式ドキュメントを参照してください.https://www.elastic.co/guide/...
原文:http://www.tech1024.cn/origin...