Почему scaled_float в Elasticsearch не округляет десятичные знаки? - PullRequest
0 голосов
/ 06 марта 2019

Я хотел попробовать scaled_float от Elasticsearch, но не смог разобраться в следующем:

Если я создаю отображение для своего индекса, как в документации:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "price": {
          "type": "scaled_float",
          "scaling_factor": 100
        }
      }
    }
  }
}

И затем я добавляю некоторые данные в индекс, например, так:

PUT my_index/my_type/1
{
  "price" : 100.1599999999
}

Я ожидаю получить цену 100.16, вместо этого результат GET my_index/my_type/1 покажет мне:

{
  "_index": "my_index",
  "_type": "my_type",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "price": 100.1599999999
  }
}

Почему не округляется?

Или округленное значение используется только в индексе и что я вижу здесь, это сохраненный исходный ввод, потому что он находится под "_source"?Как я могу проверить, происходит ли округление?

Я использую Elasticsearch 5.6.5 с Lucene 6.6.1

Заранее спасибо!

1 Ответ

1 голос
/ 06 марта 2019

Что бы вы ни указали в _source, оно никогда не изменится, однако, под ценой будет индексировано как 100.16

Если вы выполните этот запрос, вы увидите 100,16 вместо 100,1599999999

GET my_index/_search
{
  "size": 0,
  "aggs": {
    "avg": {
      avg": {
        "field": "price"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...