类别的聚合,按类别顺序排序

时间:2015-11-24 19:58:33

标签: sorting elasticsearch

我有一个弹性索引,其中每个文档包含以下内容:

category {
"id": 4,
"name": "Green",
"seq": 2
}

我可以使用聚合来获取每个类别的文档计数:

{
 "size": 0,
 "aggs": {
  "category": {
   "terms": {
    "field": "category.name"
   }
  }
 }
}

这很好,但是aggs按文档计数排序。我想要的是按照 seq 值对存储桶进行排序,这在SQL中很简单。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

看看ordering terms aggregations

这样的事情可行,但只有当"name""sequence"具有正确的关系(一对一,或以其他方式解决)时才会有效:

POST /test_index/_search
{
   "size": 0,
   "aggs": {
      "category": {
         "terms": {
            "field": "category.name",
            "order" : { "seq_num" : "asc" }
         },
         "aggs": {
            "seq_num": {
               "max": {
                  "field": "category.seq"
               }
            }
         }
      }
   }
}

以下是我用于测试的一些代码:

http://sense.qbox.io/gist/4e551b2faec81eb0343e0e6d0cc9b10f20d7d4c1