首页 > 解决方案 > Elasticsearch“Painless”返回错误和四舍五入的值

问题描述

运行 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。

标签: elasticsearchelasticsearch-painless

解决方案


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


推荐阅读