我的索引中有文档,其中包含嵌套对象locations
。
"locations": [
{
"name": "California",
"coordinates": {
"lat": 36.78,
"long": -119.42
}
}, ...
]
我编写了一个术语聚合来为数据集中出现的位置名称创建存储桶:
"aggs": {
"global": {
"nested": {
"path": "locations"
},
"aggs":{
"locations": {
"terms": {
"field": "locations.name.keyword"
}
}
}
}
}
我想要做的是为完整的位置对象创建存储桶,这样我就可以在代码中使用位置的名称和坐标。
是否存在类似于对象而不仅仅是关键字的术语聚合?
或者(因为相同位置的坐标始终相同)是否可以返回每个桶的第一个位置的坐标以及计数?
答案 0 :(得分:1)
好的,开始很棒。现在,要获取每个存储桶的第一个位置的坐标以及计数,您可以通过添加top_hits
子聚合来实现,如下所示:
"aggs": {
"global": {
"nested": {
"path": "locations"
},
"aggs":{
"locations": {
"terms": {
"field": "locations.name.keyword"
},
"aggs": {
"location": {
"top_hits": {
"size": 1,
"_source": ["locations.coordinates"]
}
}
}
}
}
}
}