代码之家  ›  专栏  ›  技术社区  ›  NSA

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

  •  0
  • NSA  · 技术社区  · 6 年前

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

    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
          }
    

    有人能告诉我我做错了什么吗?我确信这很明显。

    谢谢您!

    0 回复  |  直到 6 年前
        1
  •  1
  •   Nishant    6 年前

    _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;"
              }
            }
          }
        }
      }
    }