Я использую Elasticsearch 6.2.1 и теперь пытаюсь понять, как это работает, когда для параметра scaling_factor
установлено какое-то значение.
Согласно документации значение поля умножается на scaling_factor
и затем сохраняется как long
во время индексации. Когда scaling_factor
равно 100, я ожидаю, что значение 1,234 будет храниться внутри как 123, и после этого его можно будет найти в индексе как 1,23. Теперь я вижу, что значение 1,234 не теряет своей точности, и я могу получить его из индекса в исходной форме: 1,234.
Это ошибка в этой версии Elasticsearch? Если нет, может кто-нибудь объяснить, что происходит под капотом?
ОБНОВЛЕНИЕ
Ответ @Val прояснил поведение Elasticsearch, но я хотел бы понять, почему можно найти документ по исходному необработанному значению, хотя индекс содержит только масштабированное значение. Например, в случае следующего отображения:
{
"mappings": {
"properties": {
"num": {
"type": "scaled_float",
"scaling_factor": 100
}
}
}
}
Я могу индексировать документ
{
"num": 1.234
}
а затем найти его с помощью следующего запроса:
{
"query": {
"match": {
"num": 1.234
}
}
}
Я ожидал, что приведенный выше запрос ничего не найдет, потому что индекс содержит только округленное значение 1,23.