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