我正在phrase_prefix
搜索“工程师”,我在“技能”字段方面获得36项计算“工程”。接下来,我在“工程”的该方面字段上应用term filter
,现在在新的过滤结果中,方面中“工程”的计数为42。
过滤后的查询返回42个结果,每个结果都与构面匹配,也就是说,它们都包含“工程”作为技能。
所以我希望未过滤的查询对'技能'方面的'工程'术语有42个计数,但正如我上面提到的那样只有36个。
这是映射和查询 https://gist.github.com/santiago/a249418e5bf7531ead85
我在这里缺少什么?
由于
PD。我正在使用0.90.5
答案 0 :(得分:0)
在0.90.5中,您可以通过增加构面列表的大小来获得预期的结果:
"facets": {
"skills": {
"terms": {
"field": "skills",
"size": 50
}
},
Elasticsearch docs on term facets
中解释了导致结果不准确的原因以及为什么增加尺寸有帮助的原因size参数定义应返回多少顶级术语 整体条款清单。默认情况下,节点协调 搜索过程会要求每个分片提供自己的最大尺寸条款 一旦所有分片响应,它将把结果减少到最终 然后将列表发送回客户端。这意味着,如果 唯一术语的数量大于大小,返回的列表是 稍微偏离并且不准确(可能是术语计数是 略微偏离它甚至可能是一个应该存在的术语 没有返回最大尺寸的条目。)
在0.9.6+中,您可以在构面中添加shard_size
参数,告诉它在将结果合并到一个列表之前从每个分片请求的条件数。