我需要创建一个以聚合的形式列出整个对象的查询。映射是这样的:
{
"travelers": {
"properties": {
"traveler": "string",
"cars": {
"type":"nested",
"properties": {
"type": {
"type":"string"
},
"color": {
"type":"string"
}
}
}
}
}
}
我可以做的查询是这样的:
{
"aggregations": {
"people": {
"terms": {
"field":"traveler"
}
},
"aggregations": {
"cars": {
"nested": {
"path":"cars"
},
"aggregations": {
"types": {
"terms": {
"field":"cars.type"
}
}
}
}
}
}
}
但是这个查询只返回汽车的类型。我可以修改它以返回类型和颜色,但我不能,这样,告诉哪种颜色与哪种类型的汽车有关。我怎么能这样做?
答案 0 :(得分:2)
嵌套聚合只是确保将每个嵌套对象视为文档,并且聚合发生在嵌套文档级别而不是实际文档级别。
因此,您需要使用颜色进行更多级别的聚合,以获得您想要的内容。
{
"aggregations": {
"people": {
"terms": {
"field": "traveler"
}
},
"aggregations": {
"cars": {
"nested": {
"path": "cars"
},
"aggregations": {
"types": {
"terms": {
"field": "cars.type"
},
"aggs": {
"colors": {
"terms": {
"field": "cars.color"
}
}
}
}
}
}
}
}
}