Elasticsearch:按非字段字段按字母顺序排序聚合

时间:2018-05-17 20:00:01

标签: elasticsearch elasticsearch-aggregation

我要做的是围绕 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"]}
           }

       }
      }
    }
  }
}

注意: 我只是在聚合的背景下问这个问题。显然,我想在这个问题中完成的工作可以通过普通查询完成,但是对于其他因素/原因我需要在聚合中执行此操作。

我只是简化查询/跳过在聚合中需要完成的原因,因为它们在这个问题的上下文中并不重要。

0 个答案:

没有答案