特别申明:
本文初衷是技术分享,部分内容方法来自两位大佬的文章,均在文中赋对应原文网址。感谢大佬的分享。
1. 问题描述:
需求:
java中的Long类型对象(19位),赋值给ElasticSearch同样为Long类型的字段。

问题展现:
我在java类中的属性赋值为1513123398362902533,给ElasticSearch中传递后,在elasticsearch-head-master中显示文档中对对应字段为:1513123398362902500
也就是最后两位与java属性值不一样
2. 解释现象:
ElasticSearch的Long类型出现了精度丢失
引自这篇文章,他是前端js精度丢失,而我这里是ElasticSearch的Long类型精度丢失

Elasticsearch的long类型精准匹配异常

文章探讨了在Java中将19位Long类型数据传递给Elasticsearch时出现的精度丢失问题。问题表现为在Elasticsearch中显示的数值与原始Java值不一致。解决办法是避免使用Long类型,而是以String在Java中存储,并在Elasticsearch中用keyword类型保存,以防止精度损失。此外,建议在传递到前端时也保持String格式,以确保数据完整。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



