我的索引中包含嵌套对象locations
的文档。
"locations": [
{
"name": "California",
"coordinates": {
"lat": 36.78,
"long": -119.42
}
}, ...
]
我已经写了一个术语聚合来为出现在数据集中的位置名称创建存储桶:
"aggs": {
"global": {
"nested": {
"path": "locations"
},
"aggs":{
"locations": {
"terms": {
"field": "locations.name.keyword"
}
}
}
}
}
我想做的是为完整位置对象创建存储桶,以便在代码中使用名称和位置坐标。
是否有诸如术语聚合之类的东西适用于对象而不只是关键字?
或者(由于同一位置的坐标始终相同),是否可以返回每个铲斗的第一个位置的坐标以及计数?
最佳答案
好的,很好的开始。现在,要获取每个存储桶的第一个位置的坐标以及计数,您可以通过添加top_hits
子聚合来做到这一点,如下所示:
"aggs": {
"global": {
"nested": {
"path": "locations"
},
"aggs":{
"locations": {
"terms": {
"field": "locations.name.keyword"
},
"aggs": {
"location": {
"top_hits": {
"size": 1,
"_source": ["locations.coordinates"]
}
}
}
}
}
}
}
关于elasticsearch - 对象的存储桶聚合而不是关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118644/