ホームページ  >  記事  >  PHPフレームワーク  >  Scout を使用して Elasticsearch 検索エンジンを Laravel に統合する

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

藏色散人
藏色散人転載
2019-10-15 14:32:523380ブラウズ

前に書いてあります

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 までご連絡ください。