ElasticSearch 6.6.0 聚合平均值,脚本不起作用

ElasticSearch 6.6.0 Aggregation Avg with script not working

我尝试在我的集群上 运行 以下内容:

GET _search
{
  "aggs": {
    "buckets": {
      "terms": {
        "field": "main_feature_id.keyword",
        "size": 10
      },
      "aggs": {
        "average_dwell": {
          "avg": {
            "field": "dwell.dwell_ms",
            "script": {
              "lang": "painless",
              "source": "long x = Math.round(_value*100)/100000; return x;"
            }
          }
        }
      }
    }
  }
}

但无论我怎么尝试,我都无法将结果四舍五入。

结果如下:

"doc_count" : 26032,
      "average_dwell" : {
        "value" : 44.87277178006528
      }

有人可以告诉我我做错了什么吗?我确信这是显而易见的。

谢谢!

_value 脚本将脚本应用于文档的每个值,然后计算修改值的平均值。您似乎实现的是将精度降低到小数点后两位。这可以通过使用 bucket script aggregation 来获得期望值来实现。

{
  "aggs": {
    "buckets": {
      "terms": {
        "field": "main_feature_id.keyword",
        "size": 10
      },
      "aggs": {
        "average_dwell": {
          "avg": {
            "field": "dwell.dwell_ms"
          }
        },
        "rounded_avg": {
          "bucket_script": {
            "buckets_path": {
              "curr_avg": "average_dwell"
            },
            "script": "Math.round(params.curr_avg * 100)/100.0;"
          }
        }
      }
    }
  }
}