我有一个弹性索引,其中每个文档包含以下内容:
category {
"id": 4,
"name": "Green",
"seq": 2
}
我可以使用聚合来获取每个类别的文档计数:
{
"size": 0,
"aggs": {
"category": {
"terms": {
"field": "category.name"
}
}
}
}
这很好,但是aggs按文档计数排序。我想要的是按照 seq 值对存储桶进行排序,这在SQL中很简单。
有什么建议吗?
谢谢!
答案 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