Scout を使用して Elasticsearch 検索エンジンを Laravel に統合する

藏色散人
リリース: 2019-10-15 14:32:52
転載
3368 人が閲覧しました

前に書いてあります

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 &#39;students_index&#39;;
    }
    /**
     * 可搜索的数据索引
     *
     * @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(&#39;成燕&#39;)->get();
dd($studens);
ログイン後にコピー
100 万個のデータを入力してみると、データベースに直接クエリを実行するよりも取得速度がはるかに速くなりますか?

詳しい使用方法については、公式ドキュメントを参照してください。

https://www.elastic.co/guide/...

Laravel 関連の技術記事の詳細については、

Laravel Framework Getting Started Tutorial 列にアクセスして学習してください。

以上がScout を使用して Elasticsearch 検索エンジンを Laravel に統合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!