【发布时间】:2015-05-08 23:17:55
【问题描述】:
我正在尝试通过应用另一个聚合来对聚合结果进行排序,该聚合进行求和,然后通过降序到该总和来应用顺序。
如果我像下面这样尝试,聚合结果会按文档计数排序。
"order": {
"revrsenestedowners": "desc"
}
下面的代码解释了我面临的问题。 (只是为了说明问题而更改了字段名称)
“machines”是我的嵌套对象,但“owners”没有嵌套,它属于父对象。
我需要按所有者机器数获取前 10 台机器名称(需要 sum,因为所有者对象是列表并且可以有多个值)。
{
"query": {
"range": {
"createdDate": {
"gte": "2015-04-28T00:00:00",
"lte": "2015-05-01T23:59:59"
}
}
},
"aggs": {
"nestedagg": {
"nested": {
"path": "machines"
},
"aggs": {
"terms": {
"terms": {
"field": "machines.machineName",
"size": 10,
"order": {
"sumowners": "desc"
}
},
"aggs": {
"revrsenestedowners": {
"reverse_nested": {},
"aggs": {
"sumowners": {
"sum": {
"field": "owners.machinesCount"
}
}
}
}
}
}
}
}
}
}
我需要总和排序而不是文档计数排序。 为了让它工作,我可能需要类似的东西:
"order": {
"revrsenestedowners.sumowners": "desc"
}
有没有办法实现我正在寻找的东西。
或者这是弹性搜索的限制吗?还是错误?
我被困住了,非常感谢任何帮助
【问题讨论】:
标签: c# elasticsearch nest