A、B、C、Dの4つのクエリがあるとします。 私がしたいことは、与えられたクエリAの結果セットが、他の各クエリのそれぞれの結果セットの交差数を計算することです。与えられた結果セットのクエリのドキュメント数をカウントする
基本的に私はA AND B
、A AND C
とA AND D
をカウントしたいが、私は毎回A
再計算する必要はありません。
A
クエリはそれほど種類
Shirt
のあるすべてのアイテムを一致さ
{
"mappings": {
"doc": {
"properties": {
"type": {
"type": "string"
},
"gender": {
"type": "string"
},
"color": {
"type": "string"
},
"material": {
"type": "string"
}
}
}
}
}
そして、次のマッピングとインデックスを持っているとしましょう - 私は
は例のES V2.4を使用しています
{
"query": {
"match": {
"type": "Shirt"
}
}
}
そして、その結果セット(「すべてのアイテムタイプシャツ」)から、「青」の数字を取得したい、または「男性」の数字を取得したい 別々のクエリを作成することでそれを行うことができます:
{
"query": {
"bool": {
"must": [
{
"match": {
"type": "Shirt"
}
},
{
"match": {
"color": "Blue"
}
}
]
}
}
}
そして
{
"query": {
"bool": {
"must": [
{
"match": {
"type": "Shirt"
}
},
{
"match": {
"gender": "Male"
}
}
]
}
}
}
しかし、これは、私は本当に避けたいすべてのクエリにtype: "Shirt"
を検索するために発生します。
アップデート:私は私が探していたものを見つけた - 「フィルタ」の集約 - ので、私は私のクエリ以下を構築することができます。
{
"query": {
"match": {
"type": "Shirt"
}
},
"aggs": {
"gender_male": {
"filter": {
"match": {
"gender": "Male"
}
}
},
"color_blue": {
"filter": {
"match": {
"color": "Blue"
}
}
}
}
}
例を挙げて説明してください。 –
@HatimStovewala例で更新 –
あなただけが必要ですか? –