Elasticsearch - Lsit 整个对象聚合
Elasticsearch - Lsit whole object in terms aggregation
我需要进行查询以聚合方式列出整个对象。映射是这样的:
{
"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"
}
}
}
}
}
}
}
但此查询仅 returns 汽车的类型。我可以将其修改为 return 类型和颜色,但我不能那样说出哪种颜色与哪种类型的汽车相关。我该怎么做?
嵌套聚合只是确保每个嵌套对象都被视为一个文档,并且聚合发生在嵌套文档级别而不是实际文档级别。
因此您需要对颜色进行更多级别的聚合才能获得您要查找的内容。
{
"aggregations": {
"people": {
"terms": {
"field": "traveler"
}
},
"aggregations": {
"cars": {
"nested": {
"path": "cars"
},
"aggregations": {
"types": {
"terms": {
"field": "cars.type"
},
"aggs": {
"colors": {
"terms": {
"field": "cars.color"
}
}
}
}
}
}
}
}
}
我需要进行查询以聚合方式列出整个对象。映射是这样的:
{
"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"
}
}
}
}
}
}
}
但此查询仅 returns 汽车的类型。我可以将其修改为 return 类型和颜色,但我不能那样说出哪种颜色与哪种类型的汽车相关。我该怎么做?
嵌套聚合只是确保每个嵌套对象都被视为一个文档,并且聚合发生在嵌套文档级别而不是实际文档级别。
因此您需要对颜色进行更多级别的聚合才能获得您要查找的内容。
{
"aggregations": {
"people": {
"terms": {
"field": "traveler"
}
},
"aggregations": {
"cars": {
"nested": {
"path": "cars"
},
"aggregations": {
"types": {
"terms": {
"field": "cars.type"
},
"aggs": {
"colors": {
"terms": {
"field": "cars.color"
}
}
}
}
}
}
}
}
}