ホームページ > 記事 > PHPフレームワーク > Scout を使用して Elasticsearch 検索エンジンを Laravel に統合する
前に書いてあります
Elasticsearch (以下、es) は、リアルタイムの分散型検索および分析エンジンです。
検索エンジンに関しては、Elasticsearchだけでなく、別記事で紹介したAlgolia、sphinx、Solrなどもありますが、ここでは評価や比較はしません、この記事では使い方を中心に紹介しますLaravelのElasticsearch。
最初の選択肢は Elasticsearch がインストールされている必要があります。
この記事は laravel5.5 に基づいていますが、他のバージョンも同様です。
準備
composer を介して依存パッケージをインストールする
composer require laravel/scout composer require tamayo/laravel-scout-elastic
基本構成
config/app に追加サービス プロバイダーを .php ファイルのプロバイダー配列に変換します
// config/app.php 'providers' => [ // ... Laravel\Scout\ScoutServiceProvider::class, // ... ScoutEngines\Elasticsearch\ElasticsearchProvider::class, ],
次のコマンドを使用してスカウト構成ファイルを生成します
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
elasticsearch 構成を config/scout.php
'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 を使用してデータを自動的に移行して入力することもできます。
#<?php namespace App; use Illuminate\Database\Eloquent\Model; use Laravel\Scout\Searchable; /** * 学生模型 */ class Student extends Model { use Searchable; /** * 索引名称 * * @return string */ public function searchableAs() { return 'students_index'; } /** * 可搜索的数据索引 * * @return array */ public function toSearchableArray() { $array = $this->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インデックス データはすでにありますか?
Done
$studens = App\Student::search('成燕')->get(); dd($studens);100 万個のデータを入力してみると、データベースに直接クエリを実行するよりも取得速度がはるかに速くなりますか? 詳しい使用方法については、公式ドキュメントを参照してください。
https://www.elastic.co/guide/...
Laravel 関連の技術記事の詳細については、Laravel Framework Getting Started Tutorial 列にアクセスして学習してください。
以上がScout を使用して Elasticsearch 検索エンジンを Laravel に統合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。