如何存储MySQL中定义的小数字段并在Elasticsearch中支持范围查询?

问题描述 投票:0回答:1

我需要将MySQL中定义的十进制类型字段存储在Elasticsearch中而不损失精度。我的十进制配置是[db.十进制 (21,8)].

我尝试使用[ScaledFloat(缩放因子=10 * * 8)]来实现。但我发现Elasticsearch中存储的值仅限于long类型的最小值或最大值。如果我的值太大,就会存储为9223372036854775807,而使用范围查询时,如果我查询的数字太大,我也会用9223372036854775807来过滤。

我该怎么办?

elasticsearch
1个回答
0
投票

方法一:

您可以将十进制值存储为 Elasticsearch 中的类型关键字。这将保留准确的字符串表示形式,而不会丢失小数点和精度。

方法2:

将值拆分为 2 个单独的字段,一个用于整数,另一个用于小数(小数部分)。

方法3:

如果可行,请考虑其他数据类型。

放置索引:

{
  "mappings": {
      "decimal_field": {
        "type": "keyword"
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.