ElasticSearch:使用过滤器查询从所有结果中获取方面
ElasticSearch: getting facets from all results with filter query
不知道这个问题的标题是否够清楚。
我在 ElasticSearch 的左窗格中使用语言过滤器进行文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然想从查询的所有搜索结果中获取语言方面。我知道这在 Solr 中是可能的,但我不确定这在 ElasticSearch 中是否可行。
是的,您可以使用 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"
}
}
}
}
不知道这个问题的标题是否够清楚。
我在 ElasticSearch 的左窗格中使用语言过滤器进行文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然想从查询的所有搜索结果中获取语言方面。我知道这在 Solr 中是可能的,但我不确定这在 ElasticSearch 中是否可行。
是的,您可以使用 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"
}
}
}
}