{
"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_description
和description
都存在,那么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
匹配的文档排名更高。您可以根据需要调整提升值。