Elasticsearch(7)java検索機能Search Requestの紹介と使用

4048 ワード

目次
1まず、プライマリ検索要求を作成します.
2、主検索要求に対してパラメータ設定を行う
フロントエンドのセクションでは、単一のドキュメントまたは単一のドキュメントライブラリに基づく操作について説明します.
このセクションでは、すべてのドキュメントライブラリまたは指定された任意の数のドキュメントライブラリに基づくアクションのapiについて説明します.
SearchRequestは、ドキュメントの検索、集約、カスタムクエリーに関する任意の操作に使用され、クエリー結果に基づいて一致するキーワードを強調表示する方法も提供されます.
1検索要求オブジェクトを最初に作成します.
SearchRequest searchRequest = new SearchRequest(); 

2、検索要求に対する基本パラメータの設定
1)クエリーによって指定されたドキュメントライブラリを設定します.
SearchRequest searchRequest = new SearchRequest("posts"); 
searchRequest.types("doc"); 

2)複数のライブラリをクエリーし、複数のライブラリ名の間をカンマで区切る
 SearchRequest searchRequest = new SearchRequest("posts2","posts", "posts2", "posts1");

または、次のように設定します.
SearchRequest searchRequest = new SearchRequest();
//              :           ,       
searchRequest.indices("posts2","posts", "posts2", "posts1");

デフォルトでは、すべてのドキュメントライブラリでクエリーを行います.
3)クエリーのドキュメントライブラリ内のドキュメントタイプを指定します.
searchRequest.types("doc1");

または、ドキュメントタイプの間にカンマで区切られた複数のタイプがあります.
 searchRequest.types("doc1", "doc1", "doc2");

4)指定したクエリのルーティングスライスを設定する
searchRequest.routing("routing");

5)preferenceメソッドを使用して、あるスライスを優先してクエリーすることを指定します(デフォルトはランダムに先にスライスを削除します)
searchRequest.preference("_local");

6)主検索要求に検索内容を追加できる特徴パラメータ
a.検索コンテンツパラメータ設定オブジェクトの作成:SearchSourceBuilder
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

b.検索要求にSearchSourceBuilderオブジェクトを追加する:
searchRequest.source(searchSourceBuilder);

3で、検索された文書の内容オブジェクトSearchSourceBuilderのパラメータを設定します.
検索コンテンツを制御する動作パラメータの多くは、Rest APIの検索要求マスターと同様のパラメータオプションを含むSearchSourceBuilderで設定できます.以下に、一般的なオプションのいくつかの例を示します.
1)クエリーには、指定された内容が含まれています.
a.すべての内容を問い合わせる
searchSourceBuilder.query(QueryBuilders.matchAllQuery());

b.クエリーキーワードフィールドを含むドキュメント:userフィールドを含むすべてのドキュメントとkimchy値を含むuserフィールドを含むすべてのドキュメントをクエリーすることを示す
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy")); 

c.上記はQueryBuildersクエリーオプションに基づいており、MatchQueryBuilderを使用してクエリーパラメータを構成することもできます.
MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("user", "kimchy");
//       
matchQueryBuilder.fuzziness(Fuzziness.AUTO); 
//               
matchQueryBuilder.prefixLength(3); 
//                   
matchQueryBuilder.maxExpansions(10);

d.QueryBuildersユーティリティクラスを使用してQueryBuilderオブジェクトを作成することもできます.スムーズなプログラミングスタイルを使用してQuiryBuilderオブジェクトを作成するための補助的な方法を提供します.
QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("user", "kimchy")
                                                .fuzziness(Fuzziness.AUTO)
                                                .prefixLength(3)
                                                .maxExpansions(10);
 :             ,    QueryBuilder     SearchSourceBuilder
searchSourceBuilder.query(matchQueryBuilder);

3)クエリーの開始索引の位置と数量を設定する:以下の通り第1条から5条の文書データを返す
sourceBuilder.from(0); 
sourceBuilder.size(5); 

4)問合せ要求のタイムアウト時間を設定する:以下のように60秒以内に返却結果が得られない場合、要求がタイムアウトしたと認める
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

5)検索要求は、デフォルトで文書_を返します.ソースのコンテンツですが、Rest APIのコンテンツと同様に、この動作を上書きできます.たとえば、_を完全に閉じることができます.ソース検索:
sourceBuilder.fetchSource(false);

このメソッドはまた、1つ以上のワイルドカードモードの配列を受け入れ、どのフィールドをより細かく含むか除外するかを制御します.
String[] includeFields = new String[] {"title", "user", "innerObject.*"};
String[] excludeFields = new String[] {"_type"};
sourceBuilder.fetchSource(includeFields, excludeFields);

 
 
本節の内容は続きますので、ご注目ください....