У меня есть следующий ElasticSearch DSL запрос
query = Q("bool", should=[
Q("match_phrase", title=term),
Q("match_phrase", description=term),
Q("match_phrase", name=term),
Q("match_phrase", some_other_field=term),
])
Я хотел бы повысить оценку, когда term
соответствует полю name
, а также хотел бы уменьшить оценку, когда совпадение находится в поле description
.
Я пробовал много вещей, таких как:
Q("match_phrase", description={'query': term, boost: '0.1'}),
или
Q("match_phrase", name={'query': term, boost: 10}),
Но не мог заставить его работать.
Я также попытался объединить должен с обязательным и т. Д., Но не зашел слишком далеко - даже не стоит делиться
Есть ли простой способ сделать это без переиндексации / переоценки всех моих документов? Также будет полезен ответ с запросом ES (а не ES-DSL).