我目前正在将ES集群从ES 2.4更新到6.4。我知道还可以使用7.4.2,但是我们正在使用Elasticpress for WordPress插件,该插件最多支持6.4。我知道由于版本之间的巨大差异,我将不得不解决一些问题,但这对我来说太困难了。仅供参考,我不是经常与Elasticsearch合作,所以我不是专家。
当前,我们在全局站点搜索中有一个multi_match查询。看起来像这样:
const query = {
bool: {
must: {
multi_match: {
query: 'Marketing tips for 2020',
type: 'phrase',
fields: [
"post_title^3",
"post_author.display_name^2.5",
"post_meta.co-author_clean^2.5",
"terms.post_tag^2",
"terms.category^1.5",
"post_type^1.5",
"post_content^1"
],
fuzziness: 1,
prefix_length: 2
}
}
}
}
当我现在在6.4中尝试此查询时,我得到:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Fuzziness not allowed for type [phrase]",
"line": 1,
"col": 794
}
],
"type": "parsing_exception",
"reason": "Fuzziness not allowed for type [phrase]",
"line": 1,
"col": 794
},
"status": 400
}
错误很明显,我无法在此处所述的短语查询中使用模糊性:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#type-phrase
我在SO处发现了以下问题:Elasticsearch Fuzzy Phrases
但这不是“ multi_match”查询,而“ multi_match”查询正是我所需要的。至少,我是这样认为的。