Мне нужно выполнить эластичный поисковый запрос, где мне нужно изменить оценку документов, которые были получены по запросу. Я использую function_score, чтобы изменить счет с помощью обратной функции. Ниже приведен мой код,
{
"function_score": {
"query": {
"bool": {
"must": [{"match":{"course": "IT"}}]
}
},
"functions": [{
"field_value_factor": {
"field": "users_score_nested.rank",
"modifier": "reciprocal",
"missing": 1
}
}
],
"boost_mode": "multiply",
"score_mode": "sum"
}
}
Здесь мне нужно изменить свой счет на основе фильтра по полю курса, а также по полю ранга. Значение ранга может иметь значения, такие как 0, NULL, 1, 2. Оценка должна быть высокой для кандидата, имеющего высокий ранг (Наименьшее значение ранга). Но из-за 0 или NULL-значения происходит сбой шарда. Есть ли способ предотвратить сбой осколка, кроме изменения значений ранга Или я могу использовать любую другую функцию, кроме обратной функции?
Я получаю следующую ошибку:
{
"root_cause": [{
"type": "exception",
"reason": "Result of field modification [reciprocal(0.0)] must be a number"
}],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query"
}