首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >elasticsearch聚合按存储桶键排序

elasticsearch聚合按存储桶键排序
EN

Stack Overflow用户
提问于 2016-05-12 19:49:33
回答 1查看 3.1K关注 0票数 2

如何对键上的elasticsearch聚合存储桶进行排序。我有嵌套的聚合,并希望对我的第二个聚合存储桶结果进行排序。

就像我做的那样:

代码语言:javascript
运行
复制
"result": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": 20309,
               "doc_count": 752,
               "Events": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 0,
                  "buckets": [
                     {
                        "key": "impression",
                        "doc_count": 30
                     },
                     {
                        "key": "page_view",
                        "doc_count": 10
                     },
                     ...
                  ]
               }
            },
            {
               "key": 20771,
               "doc_count": 46,
               "Events": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 0,
                  "buckets": [
                     {
                        "key": "impression",
                        "doc_count": 32
                     },
                     {
                        "key": "page_view",
                        "doc_count": 9
                     },
                     ...
                  ]
               }
            },

我希望我的Events聚合存储桶在key impressionpage_view上按desc/asc排序。如何实现这样的结果集?

下面是我的问题

代码语言:javascript
运行
复制
GET someindex/useractivity/_search?search_type=count
{
  "size": 1000000,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "created_on": {
                  "from": "2015-01-12",
                  "to": "2016-05-12"
                }
              }
            },
            {
              "term": {
                "group_id": 1
              }
            }
          ]
        }
      }
    }
  },
  "aggs": {
    "result": {
      "terms": {
        "field": "entity_id",
        "size": 1000000
      },
      "aggs": {
        "Events": {
          "terms": {
            "field": "event_type",
            "min_doc_count": 0,
            "size": 10
          }
        }
      }
    }
  }
}

我试过使用_key,但它在存储桶中排序。我想通过查看所有的存储桶进行排序。就像我有钥匙impression一样。我希望我的存储桶结果使用这个键进行排序。不是在桶里。

我希望我的结果集是这样的:如果我想按降序对impression排序,那么我的结果应该是

代码语言:javascript
运行
复制
"buckets": [
                {
                   "key": 20771,
                   "doc_count": 46,
                   "Events": {
                      "doc_count_error_upper_bound": 0,
                      "sum_other_doc_count": 0,
                      "buckets": [
                         {
                            "key": "impression",
                            "doc_count": 32
                         },
                         {
                            "key": "page_view",
                            "doc_count": 9
                         },
                         ...
                      ]
                   }
                },
                {                       
                   "key": 20309,
                   "doc_count": 752,
                   "Events": {
                      "doc_count_error_upper_bound": 0,
                      "sum_other_doc_count": 0,
                      "buckets": [
                         {
                            "key": "impression",
                            "doc_count": 30
                         },
                         {
                            "key": "page_view",
                            "doc_count": 10
                         },
                         ...
                      ]
                   }
                },

也就是说,具有最大压痕的水桶应该在顶部。(按印象降序排列存储桶)

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 21:04:41

尝试此聚合:

代码语言:javascript
运行
复制
{
  "size": 0,
  "aggs": {
    "result": {
      "terms": {
        "field": "entity_id",
        "size": 10,
        "order": {
          "impression_Events": "desc"
        }
      },
      "aggs": {
        "Events": {
          "terms": {
            "field": "event_type",
            "min_doc_count": 0,
            "size": 10
          }
        },
        "impression_Events": {
          "filter": {
            "term": {
              "event_type": "impression"
            }
          }
        }
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37186008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档