如何在bucket聚合中包含交叉过滤文档计数?

xytpbqjk  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(0)|浏览(230)

我有一个包含大量文档和许多字段的elasticsearch索引,我们对这些文档应用了几个可选的多项过滤器。我在聚合中包含文档计数,以显示可用的筛选器值以及与该筛选器匹配的文档数的投影。
但是,我遇到的问题是,当我应用过滤器时,我希望在其他bucket中获得过滤结果的已调整文档计数,同时仍将文档计数保持在同一个bucket中。
例如,我有一个品牌过滤器,其值“foo”的doc\u计数为6,“bar”的doc\u计数为10。我有一个大小过滤器,值为“small”,doc\u count为8,值为“large”,doc\u count为8。当我应用品牌过滤器“foo”时,我希望“small”文档计数更新为3,以反映有3个大小为small的foo文档。但是,我希望“bar”过滤器仍然出现在doc\u计数为10的bucket聚合中。
当前呼叫如下所示:

{
    "query": {
        "bool": {
            "must": [],
            "must_not": [],
            "should": [],
            "filter": [
                {
                    "terms": {
                        "brand.lower": [
                            "Foo"
                        ]
                    }
                }
            ]
        }
    },
    "aggs": {
        "brand": {
            "terms": {
                "field": "brand.keyword"
            }
        },
        "size": {
            "terms": {
                "field": "size.keyword"
            }
        }
    },
    "_source": [
        "brand",
        "size"
    ],
    "size": 35,
    "from": 0
}

我的问题是:即使在单个查询中应用了“foo”筛选器,是否也可以保留“bar”的bucket doc\u计数,还是必须使用不同的筛选器上下文运行多个查询?谢谢您!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题