我正在努力编写带有方面计数的 ElasticSearch 查询。查询本身需要两个条件:
- 限制文档集的条件,排除的文档不应用于构面计数。
- 限制结果集但排除文档的条件应该是方面计数的一部分。
示例文档:
{"user": "editor", "tag": "foo"}
{"user": "editor", "tag": "bar"}
询问:
{
"query" : {
"constant_score": {
"filter": {"term": {"user": "editor"} }
}
},
"facets" : {
"tag" : { "terms" : {"field" : "tag"} }
}
}
这个查询的结果是好的,我正确地看到了标签 foo+bar 的构面计数。现在我想扩展查询,以便结果只显示带有标签“foo”的文档,但保持分面计数与以前一样(因此标签“bar”也应该出现在分面计数中)。
例如,如果我constant_score
像这样修改过滤器:
"filter": {
"and": [{"term": {"user": "editor"}}, {"term": {"tag": "foo"}}]
}
那么显然只有标签“foo”会出现在构面计数中,所以我需要在{"term": {"tag": "foo"}}
其他地方添加过滤器。
我如何在 ElasticSearch 中做到这一点?