Если вы используете запрос multiMatch
, вы должны использовать тип cross_field
с оператором AND
( см. Здесь ).
Но так как он будет соответствовать только документу, содержащему все термины, вы должны использовать bool query
с двумя предложениями should
, свободным предложением с типом по умолчанию (aka best_fields
) и оператором по умолчанию OR
и строгим оператором. с типом cross_field
и оператором AND
.
При этом будут увеличены документы, соответствующие всем полям, и будет отображаться документ с меньшим количеством баллов, соответствующий только некоторым терминам:
Что-то вроде:
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "<here your query>",
"fields": ["name", "info", "description"],
"type": "cross_fields",
"operator": "AND"
}
},
{
"multi_match": {
"query": "<here your query>",
"fields": ["name", "info", "description"],
}
}
]
}
}