При использовании Elasticsearch до версии 6 следующий запрос возвращал совпадения на основе сходства с запросом.Теперь в ES 6+ это возвращает попадание в зависимости от того, соответствуют ли они какой-либо части запроса, все с одинаковым счетом.Это изменение нарушает остальную часть более сложного запроса (не показан).
Как получить оценки попаданий, соответствующие старому ES 5 - для следующего запроса
{
"query": {
"bool": {
"should": [
{
"terms": {
"some_field_name": [
"iPad Pro",
"iPhone 8"
]
}
}
]
}
}
}
В ES 5это возвращает хиты, набранные выше для соответствия всем терминам и ниже для соответствия меньше.В ES 6+ это возвращает попадания только с оценками = 1, и поэтому они ранжируются независимо от того, сколько было совпадений.
Например, попадание с обоими терминами оценивается выше в ES 5:
"_score": 0.87546873, when 2 of 4 terms match
"_score": 0.60353506, when 2 of 5 terms match
"_score": 0.13353139, when 1 of 4 terms match
Это очень похоже на желаемое «косинусное» сходство, которое нам нужно (мы понимаем, что это не совсем то, как создаются оценки).
Какой запрос вернет те же оценки, что и ES 5делает для вышеупомянутого запроса.Другими словами, что такое эквивалентный запрос ES 6?