elasticsearch 按字段值对文档进行分组
注意这不是“如何获得不同值的计数”问题。我要的是文件,不是计数 假设我有这个映射:elasticsearch 按字段值对文档进行分组,elasticsearch,group-by,elasticsearch,Group By,注意这不是“如何获得不同值的计数”问题。我要的是文件,不是计数 假设我有这个映射: country, color, height, weight 我为这些文件编制了索引: 1. RU, red, 180, 90 2. BY, green, 170, 80 3. BY, blue, 180, 75 4. KZ, blue, 180, 95 5. KZ, red, 185, 100 6. KZ, red, 175, 80 7. KZ, red, 170, 80 我想执行一个查询,如groupby
country, color, height, weight
我为这些文件编制了索引:
1. RU, red, 180, 90
2. BY, green, 170, 80
3. BY, blue, 180, 75
4. KZ, blue, 180, 95
5. KZ, red, 185, 100
6. KZ, red, 175, 80
7. KZ, red, 170, 80
我想执行一个查询,如groupby(country,color,doc\u limit=2)
,它将返回如下内容:
{
"RU": {
"red": [
(doc 1. RU, red, 180, 90)
],
},
"BY": {
"green": [
(doc 2)
],
"blue": [
(doc 3)
]
},
"KZ": {
"blue": [
(doc 4)
],
"red": [
(doc 5),
(doc 6)
]
}
}
每个存储桶中的文档不超过2个
我该怎么做呢?这可以通过在
国家/地区
字段上的a,结合在颜色
字段上的术语
子聚合,最后是a来实现,以获得每个桶2个匹配的文档
{
"size": 0,
"aggs": {
"countries": {
"terms": {
"field": "country"
},
"aggs": {
"colors": {
"terms": {
"field": "color"
},
"aggs": {
"docs": {
"top_hits": {
"size": 2
}
}
}
}
}
}
}
}
哇!谢谢,这正是我们所需要的@Val如果您想要所有文档而不是前2名,您将如何更改查询?