boolQueryBuilderでElasticSearchの使用

:より転載https://blog.csdn.net/metheir/article/details/85080334

1.なぜフィルタは速くなりますか?

ファイル名は、すでに名前を変更し、存在しています
あなたがはっきりと見ることができる上記のフローチャートを参照してください、filterqueryの違いの多くは残っています。

例えば、query比較は、最初のクエリは、その後、スコアを計算する際に、最終的な文書は、結果を返されます。

そして、filterそれはそれは、クエリを満たしているかどうかを判断することではない場合は、クエリ処理(文書レコード結果を満たしていない)キャッシュされます; MET、直接キャッシュされた結果を。

、総括するにはfilter2通りの方法で、高速:

  • キャッシュ結果の1組
  • 2得点を数える避けます
2.ブール使用クエリ

Boolクエリに対応するLuceneBooleanQuery一つ以上の条項によって、それは、各句は、特定のタイプを有します

必要があります
返された文書が満たさなければならないmust条件句を、とスコアを計算に参加します

フィルタは、
文書が満たさなければならない返さfilter好きな条件句をではなく、must計算スコアに関与し、同様に、

それはすべき
文書が満足しないことが返されたshould状態の句をbool何がある場合は、クエリmustまたはfilter一の以上でshould句を限り、あなたはリターンを満たすことができるよう、。minimum_should_matchパラメータは、少なくともいくつかの条項を満たす定義しています。

must_notの
返される文書のための条件は、の定義を満たしていません

クエリは、両方持っている場合filterがありshould、その後、少なくともそれが含まれているshould句を。

boolクエリはまた、無効の共同得点のオプションをサポートしてdisable_coord一般的な計算因子得点は、クエリのすべてに依存します。

boolクエリはまた、使用more_matches_is_betterこうして満足機構must和should句文書がスコアを計算するために結合されます。

3.JavaAPIの使用
大型の列   のboolQueryBuilderでElasticSearchを使用して AVA「>
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

公共 ボイドは () スローにIOException {
SearchRequest searchRequest =新しい新 SearchRequest( "アイテム");
SearchSourceBuilder sourceBuilder =新しい新しい SearchSourceBuilderを();
BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery =(); boolQueryBuilder.must(QueryBuilders.matchQuery( "scompCode" "G0000001")); //ファジィクエリ boolQueryBuilder.filter(QueryBuilders.wildcardQuery( "itemDesc" "*電話*" )); //範囲クエリ:閉区間の等価; GT:オープン間隔(>)GTEの当量はかなり開区間(<)LTE:閉区間(> =)LTに閉区間(<=)





boolQueryBuilder.filter(QueryBuilders.rangeQuery("itemPrice").from(4500).TO(8899))。
sourceBuilder.query(boolQueryBuilder)。

searchRequest.source(sourceBuilder)。
SearchResponse searchResponse = client.search(searchRequest、RequestOptions.DEFAULT)。
logger.info("查询数据:{}" 。、Arrays.toString(searchResponse.getHits()GETHITS()))。
}

おすすめ

転載: www.cnblogs.com/dajunjun/p/11710894.html