我尝试使用elasticsearch构建类别明细。
我显示类别计数的问题。
如果我运行此查询(红色,休闲裤),则类别聚合将仅显示随意数。 我可以在单个查询中检索其他类别(例如鞋子,牛仔裤,连衣裙)
示例过滤器:
颜色
-Red Color(选为bool查询术语)
分类
Shoes
Pants
-Jeans
- Casual (selected as a bool query term)
Dresses
答案 0 :(得分:0)
如果我理解得很清楚,您似乎需要计算所有类别的聚合,然后对其进行过滤,以便一次只显示一个类别。
这可以使用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"}}
}
}
计算聚合时,term
上的category
过滤器不会被考虑在内。