Вы можете просто использовать запрос с несколькими совпадениями для запроса нескольких полей, и он поддерживает увеличение определенного поля, например title
в вашем случае, и различных операторов, таких как OR
в вашем случае.
Пример ES-запроса для вашего варианта использования:
{
"query": {
"multi_match" : {
"query" : "mobile phones",
"fields" : [ "title^5", "description","modelCaption","productFeatureValues.featureVal"],
"fuzziness" : "AUTO" --> Adding fuzziness to query
}
}
}
Здесь поле заголовка увеличивается в 5 раз, поэтому, если мобильные телефоны совпадают в поле заголовка, то оно будет набрано выше.
Также обратите внимание, что вы используете подстановочные знаки в строке запроса, что очень дорого, поэтому лучше их избегать, если можете.
РЕДАКТИРОВАТЬ: На основе в комментариях OP, включенный параметр нечеткости AUTO в запрос для улучшения результатов