【发布时间】:2016-03-04 03:49:17
【问题描述】:
就像当过滤器设置为分面/聚合过滤器时,它应该被排除,所以我们不会只得到一个结果。
如果用户选择了某个品牌,结果应该只有选择的品牌,但聚合应该返回所有已经存在的品牌过滤器,以便用户也可以选择其他品牌。
我们如何在 Elasticsearch 中做到这一点?同样可以在 solr 中使用标记和排除过滤器访问
【问题讨论】:
标签: php elasticsearch solr lucene bigdata
就像当过滤器设置为分面/聚合过滤器时,它应该被排除,所以我们不会只得到一个结果。
如果用户选择了某个品牌,结果应该只有选择的品牌,但聚合应该返回所有已经存在的品牌过滤器,以便用户也可以选择其他品牌。
我们如何在 Elasticsearch 中做到这一点?同样可以在 solr 中使用标记和排除过滤器访问
【问题讨论】:
标签: php elasticsearch solr lucene bigdata
使用 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" },
}
}
'
【讨论】: