我在Elasticsearch中有一组记录,每个记录都有一些标签,即:
{ id: 0, tags: ["ant", "bird", "dog", "fox"]},
{ id: 1, tags: ["cat", "fox", "goose", "horse"]},
{ id: 2, tags: ["ant", "bird", "cat", "eel", "fox", "goose", "horse"]},
{ id: 3, tags: ["ant", "eel", "goose", "horse"]},
{ id: 4, tags: ["ant", "bird", "cat", "eel", "fox"]},
{ id: 5, tags: ["ant", "bird", "cat", "eel", "fox"]},
{ id: 6, tags: ["bird", "cat", "dog", "eel", "fox", "goose"]},
{ id: 7, tags: ["ant", "cat", "eel", "fox", "horse"]},
{ id: 8, tags: ["ant", "cat", "dog", "eel", "fox", "horse"]}
我想做一个multi_term聚合的等价物,但对tags
的所有值,而不是对单独的字段。
因此,如果查找三个标签,结果将是:
...
aggregations: {
my_agg: {
....
buckets: [
{ "key": ["ant", "cat", "eel"], ... "doc_count": 5 },
{ "key": ["ant", "cat", "fox"], ... "doc_count": 5 },
{ "key": ["ant", "eel", "fox"], ... "doc_count": 5 },
{ "key": ["cat", "eel", "fox"], ... "doc_count": 5 },
{ "key": ["ant", "bird", "fox"], ... "doc_count": 4 },
{ "key": ["ant", "bird", "fox"], ... "doc_count": 4 },
{ "key": ["ant", "eel", "horse"], ... "doc_count": 4 },
{ "key": ["bird", "cat", "eel"], ... "doc_count": 4 },
{ "key": ["bird", "cat", "fox"], ... "doc_count": 4 },
{ "key": ["cat", "fox", "horse"], ... "doc_count": 4 }
]
}
}
有什么好办法吗?
1条答案
按热度按时间iovurdzv1#
您可以尝试下面的查询来实现您正在寻找的。