asticsearch: как получить только те документы, у которых нормализованные оценки (_score, деленные на max_score) выше определенного порога
Запрашивая, я пытаюсь получить только документы, чьи нормализованные оценки (_score
деленное на max_score
) выше определенного порога. Есть ли способ сделать это? Я пытался использовать функцию оценки, но я получаю SearchPhaseExecutionException
,
Мой запрос, используя плагин смысла:
POST my_index/my_type/_search
{
"query": {
"min_score": 0.4,
"function_score" : {
"query" :{
"query_string": { "_all": "test"}
},
"functions": [
{
"script_score": {
"script": "return _score / max_score;"
}
}
]
}
}
}
Трассировка исключений: "ошибка": "SearchPhaseExecutionException[Не удалось выполнить этап [запрос], все сегменты не выполнены; shardFailures
1 ответ
Ваш синтаксис запроса неправильный. Поле min_score должно находиться за пределами блока запроса. И синтаксис "query_string" также неверен. См. Док.
Попробуй это:
POST my_index/my_type/_search
{
"min_score": 0.4,
"query": {
"function_score" : {
"query" :{
"query_string": {
"query": "test",
"fields": [
"_all"
]
}
},
"functions": [
{
"script_score": {
"script": "return _score / max_score;"
}
}
]
}
}
}
Кроме того, трассировка ошибки должна содержать информацию об ошибке. Как правило, вы должны быть в состоянии идентифицировать / получить направление для ошибок оттуда.