ホームページ > 記事 > PHPフレームワーク > laravelでesを使うときの正しい姿勢について
Laravel の次のチュートリアルコラムでは、laravel で es を使用する際の正しい姿勢を紹介します。
Elasticsearch の概要Elastic の最下層はオープン ソース ライブラリ
Lucene## です#。ただし、Lucene を直接使用することはできず、そのインターフェイスを呼び出す独自のコードを作成する必要があります。 Elastic は Lucene のパッケージであり、すぐに使用できる REST API 操作インターフェイスを提供します。 おすすめコース→:「Elasticsearch 全文検索実践実戦」 (実践動画) コースより 1,000 万レベルのデータ同時実行ソリューション (理論的実践)》
ES と MysqlES の概念は類似しています図に示すように、Mysql に次のように記述します。
転置インデックス転置インデックスについて説明する前に、まず説明します。フォワードインデックスインデックスとは何かについて話します。順方向インデックスは「順方向インデックス」とも呼ばれ、転置インデックスを作成するための基礎となります。
上記のように、キーワードがどの文書に含まれているかを調べる場合、漏れがないようにすべての文書をスキャンする必要があるため、検索時間が大幅に長くなり、検索効率が低下します。このとき、転置インデックスを使用し、まず文書を単語に分割しました。
たとえば、キーワード「検索エンジン」がどの文書に出現するかをクエリしたいとします。まず、転置インデックスを使用して、キーワードが 1 と 3 に出現するドキュメントの位置をクエリできます。次に、順方向インデックスを使用してドキュメント 1 と 3 のコンテンツをクエリし、結果を返すことができます。
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
、whereIn、
whereBetween、
orderBy、
first、
get として、またページング メソッド
paginate をサポートします。
$documents = ES::connection(“default”)
->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 サイトの他の関連記事を参照してください。