Elasticsearch の bool クエリのmust
との違いは何ですか?should
自分の検索語を含む結果のみが必要な場合は、 を使用する必要がありますかmust
?
たとえば、特定の値のみを含み、今日よりも前の日付/タイムスタンプを持つ結果が含まれないようにするクエリがあります(time/date - NOW)
。また、次のコードのように、クエリ内で複数のフィルターを使用できますかmust
?
"filtered": {
"filter": {
"bool" : {
"must" : {
"term" : { "type" : 1 }
"term" : { "totals" : 14 }
"term" : { "groupId" : 3 }
"range" : {
"expires" : {
"gte": "now"
}
}
},
ベストアンサー1
must は、句 (クエリ) が一致するドキュメントに出現する必要があることを意味します。これらの句は、論理ANDのように一致する必要があります。
should は、論理ORのように、これらの句の少なくとも 1 つが一致する必要があることを意味します。
基本的に、これらは論理演算子ANDとORのように使用されます。これ。
今、ブールクエリ:
must は、ドキュメントを含めるために一致する必要がある句を意味します。
should の意味: これらの句が一致する場合、 が増加し_score
、そうでない場合は効果がありません。これらは、各ドキュメントの関連性スコアを絞り込むためにのみ使用されます。
はい、内部で複数のフィルターを使用できますmust
。