首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch "Painless“返回错误且四舍五入的值

Elasticsearch "Painless“返回错误且四舍五入的值
EN

Stack Overflow用户
提问于 2019-10-25 04:12:02
回答 2查看 308关注 0票数 0

运行Elasticsearch 7.3.2。我有两个浮点型字段"timeEnd“和timeStart。我只想返回差异。

在Kibana索引模式中,我创建了一个脚本变量"rate":

代码语言:javascript
复制
if (doc['timeEnd'].length==0) return null;
if (doc['timeStart'].length==0) return null;
return doc['timeEnd'].value-doc['timeStart'].value;

下面是它返回的内容:

代码语言:javascript
复制
[
 {
  "timeEnd": null,
  "timeStart": 1571760869.518571,
  "rate": [
   null
  ]
 },
 {
  "timeEnd": 1571760898.821922,
  "timeStart": 1571760736.872881,
  "rate": [
   128
  ]
 },
 {
  "timeEnd": 1571760893.483377,
  "timeStart": 1571760879.161604,
  "rate_mbps": [
   0
  ]
 },...

大多数返回值为0或128。

EN

回答 2

Stack Overflow用户

发布于 2019-10-25 12:29:41

timeEnd和timeStart为浮点型,为单精度32位浮点数。您需要将它们更改为双精度64位浮点数

票数 1
EN

Stack Overflow用户

发布于 2021-03-06 01:39:36

正如@jaspreet-chahal正确提到的,这不是一个错误。

elasticsearch中的float numeric field type遵循IEEE 754 standard(wikipedia)表示single-precision floating point floating point format,限制为有限值(即既不是无限也不是NaN参见@elastic/elasticsearch#27653)。

例如:

1571760898.821922的等效浮点数是1571760896,因此在您的脚本字段中会出现错误。

https://www.h-schmidt.net/FloatConverter/IEEE754.html

请将jaspreet's answer标记为可接受的解决方案。谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58548544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档