我是 ES 的新手,在 ES 中有一个多匹配查询,并希望根据其可用性考虑字段


{
"multi_match": {
"query": "TEST",
"fields": [
"description.regexkeyword^1.0",
"logical_name.regexkeyword^1.0",
"logical_table_name.regexkeyword^1.0",
"physical_name.regexkeyword^1.0",
"presentation_name.regexkeyword^1.0",
"table_name.regexkeyword^1.0"
],
"type": "best_fields",
"operator": "AND",
"slop": 0,
"prefix_length": 0,
"max_expansions": 50,
"lenient": false,
"zero_terms_query": "NONE",
"boost": 1
}
}

有一个字段,即edited_description,如果在文档中edited_description exists,则考虑edited_description.regexkeyword^1.0其他考虑描述,即description.regexkeyword^1.0.

不能在查询中定义 if 条件multi_match。但是你可以做的是以不同的方式重新审视你的问题陈述。我可以重新看待这一点,如果edited_descriptiondescription都存在,那么edited_description字段中的匹配应该被赋予更高的优先级。

这可以通过为edited_description字段设置稍高的提升值来实现。

{
"multi_match": {
"query": "TEST",
"fields": [
"description.regexkeyword^1.0",
"edited_description.regexkeyword^1.2",
"logical_name.regexkeyword^1.0",
"logical_table_name.regexkeyword^1.0",
"physical_name.regexkeyword^1.0",
"presentation_name.regexkeyword^1.0",
"table_name.regexkeyword^1.0"
],
"type": "best_fields",
"operator": "AND",
"slop": 0,
"prefix_length": 0,
"max_expansions": 50,
"lenient": false,
"zero_terms_query": "NONE",
"boost": 1
}
}

这将导致edited_description匹配的文档排名更高。您可以根据需要调整提升值。

最新更新