首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在非术语字段上按术语聚合响应对存储桶进行排序?

是否可以在非术语字段上按术语聚合响应对存储桶进行排序?
EN

Stack Overflow用户
提问于 2015-05-19 19:09:28
回答 1查看 3.9K关注 0票数 1

我需要对ElasticSearch术语聚合的结果中的存储桶进行排序。下面是ElasticSearch中的一条索引记录

代码语言:javascript
运行
复制
{"personId":"10","Salary":10000, "Age":20, "personName":"xyz"}

我在现场工资上使用术语聚合。以下是聚合ElasticSearch查询的术语:

代码语言:javascript
运行
复制
{
    "aggs" : {
        "genders" : {
            "terms" : {
                "field" : "Salary"
            }
        }
    }
}

此查询根据薪资值返回存储桶。这些存储桶可以使用以下查询对工资值进行排序:

代码语言:javascript
运行
复制
{
    "aggs" : {
        "genders" : {
            "terms" : {
                "field" : "gender",
                "order" : { "_term" : "asc" }
            }
        }
    }
}

但是我需要在任何字段Age (非术语字段)上对存储桶进行排序,有什么方法可以做到吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-19 21:57:25

聚合的全部目的是将文档“分派”到存储桶中,每个存储桶由terms聚合的声明字段定义,在本例中为Salary

您在响应中获得的存储桶不再是文档。例如,在存储桶10000中,您将获得具有Salary: 10000的文档的计数,并且您将拥有与所有文档中不同的Salary值一样多的存储桶(尽管默认情况下只有10个存储桶)。

因此,由于存储桶不是文档,并且存储桶可以聚合具有不同Age值的文档,因此不清楚您希望如何按AgeSalary存储桶进行排序。

也许,解决这个问题的一种方法是在Age字段上添加一个terms子聚合,这样您就可以获得顶级的Salary存储桶,而在其下面的存储桶则可以获得Age存储桶。然后,您可以以任何想要的方式对Salary/Age存储桶对进行排序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30323937

复制
相关文章

相似问题

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