Elasticsearch浮点/双字段类型精度

时间:2019-02-28 12:59:40

标签: elasticsearch

我正在Elasticsearch(版本6.6.0)中尝试使用float / double字段。我已经创建了这个索引:

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "amount": {
            "type" : "float"
        }
      }
    }
  }
}

我添加了此条目:

PUT my_index/_doc/1
{
  "amount" : 1.0000000000111111111122222222223333333333
}

检索此文档时,我得到的是发送给Elastic的确切金额:

GET my_index/_doc/1
...
    "_source": {
        "amount": 1.0000000000111111111122222222223333333333
    }
...

通过检查文档,我希望返回值的精度较低(数字更少):Elastic numeric data types documentation

  

float-单精度32位IEEE 754浮点数,   限制为有限值。

我想知道Elasticsearch是否将值保留为BigDecimal(或类似的东西),但我找不到对此的任何引用。

我的问题:这是否记录在某处?我在这里想念东西吗?

1 个答案:

答案 0 :(得分:0)

V-K的评论之后,我进行了更多实验,发现:

  • Elasticsearch将返回发送给它的原始值(例如:17.3),即使该值不能准确地用映射中指定的类型表示(例如:整数);
  • 转换为映射中指定的类型的值(例如:整数)将在评估搜索查询中使用。例如,请求所有整数字段> 17.1的文档将不会返回整数字段设置为17.3的文档(因为在内部Elasticsearch会看到field == 17)。