2个术语聚合后的ElasticSearch Order

时间:2015-11-04 07:12:11

标签: elasticsearch

假设我在ES中有以下文档,每个文档都有3个字段:f1,f2和score。 我想查找所有文档,按f1,f2分组并按组最大分数排序,在SQL中我可以这样做:

select f1,f2,score from table group by f1,f2 order by max(score)

elasticsearch的等价物是什么?嵌套的术语聚合没有给出正确的顺序,因为返回的f2术语桶都嵌套在f1术语的同一个桶中。

1 个答案:

答案 0 :(得分:3)

以下聚合应该有效

{
  "aggs": {
    "fileCombo": {
      "terms": {
        "script": "doc['field1'].value + doc['field2'].value",
        "order": {
          "maxScore": "desc"
        }
      },
      "aggs": {
        "maxScore": {
          "max": {
            "field": "score"
          }
        }
      }
    }
  }
}

首先根据field1和field2进行聚合。 最大字段的下一个订单。