我使用的是elasticsearch 5+,我使用模糊做了一些查询。我了解以下模糊参数:
模糊性,前缀长度。
但是,我无法理解“max_expansions”,我读了很多文章,但这对我来说很难,因为关于它的例子很少。
你能用例子解释一下这个参数吗?它如何与模糊参数一起工作?
写一个例子:我做了这个查询:
GET my-index/my-type/_search
{
"query": {
"fuzzy": {
"my-field": {
"value": "house",
"fuzziness": 1,
"prefix_length": 0,
"max_expansions": 1
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有4个分片,我的查询找到了6个结果,因为“my-field”中有6个带有“hous”的文档。如果 max_expansions 就像数据库中的限制,最大结果应该是 4 (因为我有 4 个分片)?为什么返回6个结果?
该
max_expansions设置定义了模糊查询在停止搜索之前将匹配的最大术语数,它也会对模糊查询的性能产生巨大影响。然而,减少查询项会产生负面影响,因为由于查询提前终止,可能找不到一些有效结果。重要的是要了解max_expansions查询限制在分片级别起作用,这意味着即使设置为 1,多个术语也可能匹配,所有术语都来自不同的分片。此行为可能会使其看起来好像max_expansions无效,因此请注意,计算返回的唯一术语并不是确定是否有效的有效方法max_expansions。
基本上,这意味着当 Elasticsearch 触发模糊查询时,它会将搜索中考虑的术语数量限制为max_expansions. 正如它所写的那样,它并不像limit数据库中那样明显,因为在这里,在 Elasticsearch 中它正在处理分片。可能更预期的结果是您仅在本地使用一个分片设置 Elasticsearch 并测试其行为。
| 归档时间: |
|
| 查看次数: |
7212 次 |
| 最近记录: |