按总和排序聚合在弹性搜索中抛出错误
Order by sum aggregation throws error in elastic search
我正在尝试通过应用另一个进行求和的聚合来对聚合结果进行排序,然后通过降序到该总和来应用顺序。
如果我像下面那样尝试,聚合结果将按文档计数排序。
"order": {
"revrsenestedowners": "desc"
}
下面的代码解释了我面临的问题。 (更改字段名称只是为了说明问题)
"machines" 是我的嵌套对象,但 "owners" 不是嵌套的,它属于父对象。
我需要根据所有者机器数获取前 10 台机器名称(需要求和,因为所有者对象是列表并且可以有多个值)。
{
"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"
}
有没有办法实现我正在寻找的东西。
或者这是弹性搜索的限制?还是错误?
我被困住了,非常感谢任何帮助
我在弹性搜索论坛上提出了同样的问题,他们用正确的语法回复了,
https://github.com/elastic/elasticsearch/issues/11059
答案是:
"order": {
"revrsenestedowners > sumowners.value" : "desc"
}
希望对其他人有所帮助,
我正在尝试通过应用另一个进行求和的聚合来对聚合结果进行排序,然后通过降序到该总和来应用顺序。
如果我像下面那样尝试,聚合结果将按文档计数排序。
"order": {
"revrsenestedowners": "desc"
}
下面的代码解释了我面临的问题。 (更改字段名称只是为了说明问题)
"machines" 是我的嵌套对象,但 "owners" 不是嵌套的,它属于父对象。
我需要根据所有者机器数获取前 10 台机器名称(需要求和,因为所有者对象是列表并且可以有多个值)。
{
"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"
}
有没有办法实现我正在寻找的东西。
或者这是弹性搜索的限制?还是错误?
我被困住了,非常感谢任何帮助
我在弹性搜索论坛上提出了同样的问题,他们用正确的语法回复了,
https://github.com/elastic/elasticsearch/issues/11059
答案是:
"order": {
"revrsenestedowners > sumowners.value" : "desc"
}
希望对其他人有所帮助,