运行Elasticsearch 7.3.2。我有两个浮点型字段"timeEnd“和timeStart。我只想返回差异。
在Kibana索引模式中,我创建了一个脚本变量"rate":
if (doc['timeEnd'].length==0) return null;
if (doc['timeStart'].length==0) return null;
return doc['timeEnd'].value-doc['timeStart'].value;下面是它返回的内容:
[
{
"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。
发布于 2019-10-25 12:29:41
timeEnd和timeStart为浮点型,为单精度32位浮点数。您需要将它们更改为双精度64位浮点数
发布于 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标记为可接受的解决方案。谢谢
https://stackoverflow.com/questions/58548544
复制相似问题