首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将聚合限制为过滤器的结果

将聚合限制为过滤器的结果
EN

Stack Overflow用户
提问于 2014-04-03 00:02:28
回答 2查看 22.5K关注 0票数 20

给定在一个字段中具有给定值的一组文档,我想知道有多少个文档在第二个字段中具有每个值。

我尝试使用以下查询的术语聚合来做到这一点:

代码语言:javascript
复制
{
    "size": 0,
    "filter": {
        "term": {
            "field1": "value"
        }
    },
    "aggregations": {
        "field2" : {
            "terms" : { "field" : "field2" }
        }
    }
}

但返回的计数显示了整个索引中第二个字段的每个值的文档数,而不限于第一个字段具有给定值的那些文档。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 02:57:49

您是否尝试过使用过滤查询?

代码语言:javascript
复制
{
    "query": {
        "filtered": {
           "query": {
                "match_all": {}
           },
           "filter": {
               "term": {
                  "field1": "value"
               }
           }
        }
    },
    "aggregations": {
        "field2": {
           "terms": { "field": "field2" }
        }
    }
}
票数 28
EN

Stack Overflow用户

发布于 2014-11-03 12:59:30

这里有一个比较:https://www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html

简而言之,您的顶级过滤器就像链接中的post_filter。要过滤,然后计算聚合,您需要使用查询。

如果您担心查询中分数的计算对性能造成的影响,您可以查看恒定分数查询,这基本上是一个过滤器-包装器查询。

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

https://stackoverflow.com/questions/22817026

复制
相关文章

相似问题

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