【发布时间】:2016-03-11 15:58:22
【问题描述】:
我不知道这个问题的标题是否足够清楚。
我在 ElasticSearch 的左窗格中有一个带有语言过滤器的文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然想从查询的所有搜索结果中获取语言方面。我知道这在 Solr 中是可能的,但我不确定这在 ElasticSearch 中是否可行。
【问题讨论】:
标签: elasticsearch filter facet
我不知道这个问题的标题是否足够清楚。
我在 ElasticSearch 的左窗格中有一个带有语言过滤器的文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然想从查询的所有搜索结果中获取语言方面。我知道这在 Solr 中是可能的,但我不确定这在 ElasticSearch 中是否可行。
【问题讨论】:
标签: elasticsearch filter facet
是的,您可以通过使用post_filter 而不是普通过滤器来实现此目的。 post_filter 所做的是在对完整数据集计算聚合之后过滤文档。
所以不要这样:
{
"query": {
"bool": {
"filter": {
"term": {
"some_field": "some_value"
}
}
}
},
"aggs": {
"languages": {
"terms": {
"field": "language"
}
}
}
}
这样做:
{
"post_filter": {
"term": {
"some_field": "some_value"
}
},
"aggs": {
"languages": {
"terms": {
"field": "language"
}
}
}
}
【讨论】: