【问题标题】:Elasticsearch aggregationsElasticsearch 聚合
【发布时间】:2014-11-18 22:22:33
【问题描述】:
我正在尝试使用 elasticsearch 构建类别钻取。
我在显示类别计数时遇到问题。
如果我运行这个查询(红色,休闲裤),类别聚合将只显示休闲的计数。
我可以在单个查询中检索其他类别计数吗(例如鞋子、牛仔裤、连衣裙)
过滤器示例:
颜色:
-红色(选择为布尔查询词)
分类:
Shoes
Pants
-Jeans
- Casual (selected as a bool query term)
Dresses
【问题讨论】:
标签:
elasticsearch
facets
drilldown
【解决方案1】:
如果我理解得很好,您似乎需要计算所有类别的聚合,然后对其进行过滤以一次仅显示一个类别。
这可以使用post_filter 来实现(参见documentation)。它是一个过滤器,在计算聚合后应用。
在你的情况下,而不是像这样查询:
{
"query": {
"bool": {
"must": [
{"term": {"color": "red"} },
{"term": {"category": "casual"}}
....
]
}
},
"aggs": {
...
}
}
你用这个:
{
"query": {
"bool": {
"must": [
{"term": {"color": "red"} }
...
]
}
},
"aggs": {
...
},
"post_filter": {
{"term": {"category": "casual"}}
}
}
并且在计算聚合时不会考虑category 上的term 过滤器。