我要做的是围绕 nameId 字段聚合,并按名称字段对存储桶进行排序。我可以按年龄排序。
我已经找到了根据文档的其他字段进行排序的工作,但它仅限于数字字段。
我可以通过数字字段订购的查询示例如下。
如果我将 a2 中的总和聚合更改为术语聚合并将其聚合在非数字字段(例如名称)上,则会导致弹性搜索出错: :“无效术语聚合顺序路径[a2]。术语存储区只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合构建,最终单个存储桶或度量标准路径末端的聚合。“”
有没有办法在非数字字段上对存储桶进行排序?
{
"size" : 0,
"aggs": {
"a1": {
"terms": {
"field": "nameId",
"size":5
,"order": {"a2": "desc"}
},
"aggs":{
"a2":{
"sum":{
"size": 0,
"field":"age"
}
},
"aggs":{
"top_hits":{
"size":1,
"_source": {
"include":["name", "nameId", "age"]}
}
}
}
}
}
}
注意: 我只是在聚合的背景下问这个问题。显然,我想在这个问题中完成的工作可以通过普通查询完成,但是对于其他因素/原因我需要在聚合中执行此操作。
我只是简化查询/跳过在聚合中需要完成的原因,因为它们在这个问题的上下文中并不重要。