elasticsearch - ElasticSearch中来自sqlserver jdbc river的奇怪 float

标签 elasticsearch elasticsearch-jdbc-river

我有一个SQLServer数据库,当我导入一个浮点类型时,它导入了一个不正确的值:

DB值:9.0
ES值:90.0

DB值:16.00
ES值:16000000000000004

我已经为值设置了一个浮点类型的映射,并在river config中设置了scale:2参数,但没有成功。

最佳答案

我的猜测是,沿该行的某个位置将值解析为字符串并以错误的区域性设置了格式。例如。如果您的小数点是逗号,那么一个点(大多数情况下)将是千位分隔符,并且将被忽略:

PS> Get-Culture

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            German (Germany)


PS> [double]::Parse('9.0')
90

而16似乎并不完全是16,这就是为什么您会得到这么多的数字的原因。

最简单的解决方法是更改​​服务器或计算机上的语言环境。另一个选择是弄清楚这是代码中的错误还是框架的错误。通常,在格式化或解析供机器使用的数字时始终指定区域性(例如.NET中的不变区域性或C中的C语言环境)属于常识,但许多应用程序也都犯了错误。

关于elasticsearch - ElasticSearch中来自sqlserver jdbc river的奇怪 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15741653/

相关文章:

elasticsearch - ElasticSearch/Kibana:只读用户权限

elasticsearch - 如何在Elasticsearch中使用数组字段精确查找短语?

mysql - 不可用碎片异常

elasticsearch - 将Elasticsearch jriver jdbc插件与索引设置一起使用时发生错误

sql-server-2008 - 使用MSSQL River的Elasticsearch 0.90

elasticsearch - 如何在 Elasticsearch 5 中向 function_score 查询添加过滤器

python - 如何使用 Elasticsearch 和Python有效地索引json文件?

elasticsearch - 如何在elasticsearch查询中执行搜索?

elasticsearch - elasticsearch jdbc river插件会跟踪对mysql中现有行的更改吗?

mysql - ElasticSearch river JDBC MySQL 不删除记录