喜欢当为分面/聚合过滤器设置过滤器时,应该将其排除,因此我们不会得到一个结果。
如果用户选择某个品牌,结果应仅包含所选品牌,但聚合应返回已存在的所有品牌过滤器,以便用户也可以选择其他品牌。
我们如何在Elasticsearch中做到这一点?可以使用标记和排除过滤器
在solr中访问相同内容答案 0 :(得分:0)
使用post_filter过滤搜索结果,但仍显示聚合中的所有数据。
请参阅Post Filter:
post_filter应用于搜索结果的最后一个 搜索请求,已经计算了聚合。它的 通过例子最好地解释目的:
curl -XGET localhost:9200/shirts/_search -d '
{
"query": {
"filtered": {
"filter": {
{ "term": { "brand": "gucci" }}
}
}
},
"aggs": {
"colors": {
"terms": { "field": "color" },
},
"color_red": {
"filter": {
"term": { "color": "red" }
},
"aggs": {
"models": {
"terms": { "field": "model" }
}
}
}
},
"post_filter": {
"term": { "color": "red" },
}
}
'