elasticsearch 如何在桶聚合中包括交叉筛选单据计数?
我有一个包含大量文档和许多字段的ElasticSearch索引,我们对这些文档应用了几个可选的多术语过滤器。我在聚合中包括文档计数,以显示可用的筛选器值以及与该筛选器匹配的文档数的投影 然而,我遇到的问题是,当我应用过滤器时,我希望在其他存储桶中获得过滤结果的调整文档计数,同时仍将文档计数保留在同一存储桶中 例如,我有一个品牌过滤器,其值为“Foo”,doc_计数为6,值为“Bar”,doc_计数为10。我有一个大小过滤器,它的值为“小”,doc_计数为8,值为“大”,doc_计数为8。当我应用品牌过滤器“Foo”时,我希望“small”doc_计数更新为3,以反映有3个大小为small的Foo文档。但是,我希望“Bar”过滤器仍然出现在doc_计数为10的bucket聚合中 当前,该呼叫看起来如下所示:
elasticsearch 如何在桶聚合中包括交叉筛选单据计数?,
elasticsearch,kibana,
elasticsearch,Kibana,我有一个包含大量文档和许多字段的ElasticSearch索引,我们对这些文档应用了几个可选的多术语过滤器。我在聚合中包括文档计数,以显示可用的筛选器值以及与该筛选器匹配的文档数的投影 然而,我遇到的问题是,当我应用过滤器时,我希望在其他存储桶中获得过滤结果的调整文档计数,同时仍将文档计数保留在同一存储桶中 例如,我有一个品牌过滤器,其值为“Foo”,doc_计数为6,值为“Bar”,doc_计数为10。我有一个大小过滤器,它的值为“小”,doc_计数为8,值为“大”,doc_计数为8。当我应用
{
"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_计数,还是必须使用不同的过滤器上下文运行多个查询?谢谢大家!