我需要将MySQL中定义的十进制类型字段存储在Elasticsearch中而不损失精度。我的十进制配置是[db.十进制 (21,8)].
我尝试使用[ScaledFloat(缩放因子=10 * * 8)]来实现。但我发现Elasticsearch中存储的值仅限于long类型的最小值或最大值。如果我的值太大,就会存储为9223372036854775807,而使用范围查询时,如果我查询的数字太大,我也会用9223372036854775807来过滤。
我该怎么办?
方法一:
您可以将十进制值存储为 Elasticsearch 中的类型关键字。这将保留准确的字符串表示形式,而不会丢失小数点和精度。
方法2:
将值拆分为 2 个单独的字段,一个用于整数,另一个用于小数(小数部分)。
方法3:
如果可行,请考虑其他数据类型。
放置索引:
{
"mappings": {
"decimal_field": {
"type": "keyword"
}
}
}