【问题标题】:Order by sum aggregation throws error in elastic search按总和聚合排序在弹性搜索中引发错误
【发布时间】: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


    【解决方案1】:

    我在弹性搜索论坛上提出了同样的问题,他们用正确的语法回复了,

    https://github.com/elastic/elasticsearch/issues/11059

    答案是:

    "order": {
        "revrsenestedowners > sumowners.value" : "desc"
    }
    

    希望对其他人有所帮助,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 2015-12-30
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      相关资源
      最近更新 更多