首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch中聚合后的排序

Elasticsearch中聚合后的排序
EN

Stack Overflow用户
提问于 2015-06-10 22:47:59
回答 2查看 41.2K关注 0票数 22

我有关于这个结构的文档:

代码语言:javascript
复制
{
    FIELD1:string,
    FIELD2:
        [ {SUBFIELD:number}, {SUBFIELD:number}...]
}

我想对FIELD2SubbFIED中的数字和的结果进行排序:

代码语言:javascript
复制
GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}

如果我这样做,我得到的存储桶没有排序,但我想要按"a2“值排序的存储桶。我怎么能做到这一点?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 22:57:47

你差一点就成功了。您只需向a1术语聚合添加一个order property,如下所示:

代码语言:javascript
复制
GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0,
        "order": {"a2": "desc"}      <--- add this
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}
票数 62
EN

Stack Overflow用户

发布于 2020-01-14 13:26:55

来自Val https://stackoverflow.com/users/4604579/val的卓越表现

基本上是一样的,但我找到了每个“名字”的最大“尺寸”,并显示了前25个最大的:

代码语言:javascript
复制
{
  "size": 0,
  "aggs": {
    "agg1": {
      "terms": {
        "field": "name.keyword",
        "order": {
          "agg2": "desc"
        },
        "size": 25
      },
      "aggs": {
        "agg2": {
          "max": {
            "field": "size"
          }
        }
      }
    }
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30759819

复制
相关文章

相似问题

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