0
をフィルタリング集約は、私が弾性で3行からインデックスを持っているとしますElasticSearch:簡単にするため
{"id": 1, "tags": ["t1", "t2", "t3"]},
{"id": 2, "tags": ["t1", "t4", "t5"]}
私は一致するドキュメント内の他のタグの結果を返さずに、いくつかのタグで集計する必要があります。
{
"aggs": {
"tags": {
"terms": {"field": "tags"}
}
},
"query": {
"bool": {
"filter": [
{
"terms": {"tags": ["t1", "t2"]}
}
]
}
}
}
# RESULT
{
"aggregations": {
"tags": {
"buckets": [
{"doc_count": 2, "key": "t1"},
{"doc_count": 1, "key": "t2"},
{"doc_count": 1, "key": "t3"}, # should be removed by filter
{"doc_count": 1, "key": "t4"}, # should be removed by filter
{"doc_count": 1, "key": "t5"}, # should be removed by filter
],
}
},
"hits": {
"hits": [],
"max_score": 0.0,
"total": 2
},
}
この結果を(おそらく)後処理する方法は?
インデックスの3行の場合、これは3つの余分なアイテム(t3、t4、t5)のみであるためです。しかし、現実の状況で私はインデックスに200Kを超える行を持っており、それは恐ろしいです!私は50個のタグで集計が必要ですが、1K個以上のタグで結果が得られます。