ホームページ  >  記事  >  PHPフレームワーク  >  laravelでesを使うときの正しい姿勢について

laravelでesを使うときの正しい姿勢について

藏色散人
藏色散人転載
2020-09-19 09:13:045745ブラウズ

Laravel の次のチュートリアルコラムでは、laravel で es を使用する際の正しい姿勢を紹介します。

laravelでesを使うときの正しい姿勢について

Elasticsearch の概要Elastic の最下層はオープン ソース ライブラリ

Lucene## です#。ただし、Lucene を直接使用することはできず、そのインターフェイスを呼び出す独自のコードを作成する必要があります。 Elastic は Lucene のパッケージであり、すぐに使用できる REST API 操作インターフェイスを提供します。

おすすめコース→:

「Elasticsearch 全文検索実践実戦」 (実践動画) コースより 1,000 万レベルのデータ同時実行ソリューション (理論的実践)》

ES と MysqlES の概念は類似しています図に示すように、Mysql に次のように記述します。


laravel 使用 es 的正确姿势

転置インデックス転置インデックスについて説明する前に、まず説明します。フォワードインデックスインデックスとは何かについて話します。順方向インデックスは「順方向インデックス」とも呼ばれ、転置インデックスを作成するための基礎となります。

上記のように、キーワードがどの文書に含まれているかを調べる場合、漏れがないようにすべての文書をスキャンする必要があるため、検索時間が大幅に長くなり、検索効率が低下します。このとき、転置インデックスを使用し、まず文書を単語に分割しました。
laravel 使用 es 的正确姿势
たとえば、キーワード「検索エンジン」がどの文書に出現するかをクエリしたいとします。まず、転置インデックスを使用して、キーワードが 1 と 3 に出現するドキュメントの位置をクエリできます。次に、順方向インデックスを使用してドキュメント 1 と 3 のコンテンツをクエリし、結果を返すことができます。
laravel 使用 es 的正确姿势

Laravel は ES を使用します

プラグインのインストール Basemkhirat/elasticsearch

は Laravel で ES を利用するための拡張機能で、非常に便利です:

1) インストール方法
$ combos requirebasemkhirat/elasticsearch

2) Publish

$ php 職人のベンダー:publish –provider=”Basemkhirat\Elasticsearch\ElasticsearchServiceProvider”

configuration このようにしてインストールしました。接続構成は次のとおりです:

'connections' => [
    'default' => [
        'servers' => [
            [
                "host" => env("ELASTIC_HOST", "127.0.0.1"),
                "port" => env("ELASTIC_PORT", 9200),
                'user' => env('ELASTIC_USER', ''),
                'pass' => env('ELASTIC_PASS', ''),
                'scheme' => env('ELASTIC_SCHEME', 'http'),
            ]
        ],
        'index' => env('ELASTIC_INDEX', 'my_index')
    ]],
servers ここにクラスター構成を追加できます。

利用方法このプラグインの利用方法は、よく使われるクエリコンストラクタをサポートするLaravelのクエリコンストラクタから参照することができます。 where

whereInwhereBetweenorderByfirstget として、またページング メソッド paginate をサポートします。 $documents = ES::connection(“default”)

->index(“my_index”)
->type(“my_type”)

;get (); # 結果のコレクションを返す


フィールドの重みを設定:

ES::type(“my_type”)->search(“hello” , function ($search){

$search->boost(2)->fields(["title" => 2, "content" => 1])
})-> get( );



ソース コードを変更して必要なメソッドを拡張したり、ネイティブ クエリ ステートメントを構築したりすることもできます。

$params['body'] = [
            'aggs' => [
                'all_created' => [
                    'terms' => [
                        'field' => 'element.raw',
                        'size'  => $this->_mAggsPageSize                    ],

                    'aggs' => [

                        'sum_pv' => [
                            'sum' => ['field' => 'pv'],
                        ],
                    ],
                ],
            ],
        ];

結論

ES 組み込みトークナイザーは中間分割サポートには適していません。より推奨されるのは IK トークナイザー です。ik バージョンは ES バージョン番号と一致している必要があることに注意してください

以上がlaravelでesを使うときの正しい姿勢についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。