rewrite 参数
编辑rewrite
参数
编辑此参数仅供专家用户使用。更改此参数的值可能会影响搜索性能和相关性。
Elasticsearch 内部使用 Apache Lucene 来支持索引和搜索。Lucene 最初的形式无法执行以下查询:
为了执行这些查询,Lucene 会将它们更改为更简单的形式,例如 bool
查询或 位集。
rewrite
参数决定:
- Lucene 如何计算每个匹配文档的相关性得分
- Lucene 是否将原始查询更改为
bool
查询或位集 - 如果更改为
bool
查询,则包含哪些term
查询子句
有效值
编辑-
constant_score_blended
(默认) -
为每个文档分配一个等于
boost
参数的相关性得分。此方法在最耗时的词项上维护类似
bool
查询 的实现,同时将不太耗时的词项预处理为过滤器位集。此方法可能导致生成的
bool
查询超出indices.query.bool.max_clause_count
设置中的子句限制。如果查询超出此限制,Elasticsearch 将返回错误。 -
constant_score
- 对于较少的匹配词项,使用
constant_score_boolean
方法。否则,此方法按顺序查找所有匹配的词项,并使用位集返回匹配的文档。 -
constant_score_boolean
-
为每个文档分配一个等于
boost
参数的相关性得分。此方法将原始查询更改为
bool
查询。此bool
查询包含一个should
子句和每个匹配词项的term
查询。此方法可能导致最终的
bool
查询超出indices.query.bool.max_clause_count
设置中的子句限制。如果查询超出此限制,Elasticsearch 将返回错误。 -
scoring_boolean
-
计算每个匹配文档的相关性得分。
此方法将原始查询更改为
bool
查询。此bool
查询包含一个should
子句和每个匹配词项的term
查询。此方法可能导致最终的
bool
查询超出indices.query.bool.max_clause_count
设置中的子句限制。如果查询超出此限制,Elasticsearch 将返回错误。 -
top_terms_blended_freqs_N
-
计算每个匹配文档的相关性得分,就像所有词项都具有相同的频率一样。此频率是所有匹配词项的最大频率。
此方法将原始查询更改为
bool
查询。此bool
查询包含一个should
子句和每个匹配词项的term
查询。最终的
bool
查询仅包含前N
个得分词项的term
查询。可以使用此方法来避免超出
indices.query.bool.max_clause_count
设置中的子句限制。 -
top_terms_boost_N
-
为每个匹配的文档分配一个等于
boost
参数的相关性得分。此方法将原始查询更改为
bool
查询。此bool
查询包含一个should
子句和每个匹配词项的term
查询。最终的
bool
查询仅包含前N
个词项的term
查询。可以使用此方法来避免超出
indices.query.bool.max_clause_count
设置中的子句限制。 -
top_terms_N
-
计算每个匹配文档的相关性得分。
此方法将原始查询更改为
bool
查询。此bool
查询包含一个should
子句和每个匹配词项的term
查询。最终的
bool
查询仅包含前N
个得分词项的term
查询。可以使用此方法来避免超出
indices.query.bool.max_clause_count
设置中的子句限制。
rewrite
参数的性能注意事项
编辑对于大多数用途,我们建议使用 constant_score_blended
、constant_score
、constant_score_boolean
或 top_terms_boost_N
重写方法。
其他方法会计算相关性得分。这些得分计算通常开销很大,并且不会改善查询结果。