桶脚本聚合上下文编辑

bucket_script 管道聚合 中使用 Painless 脚本计算桶中的结果值。

变量编辑

params (Map,只读)
作为查询的一部分传递的用户定义参数。参数包括在 buckets_path 中定义的值。

返回编辑

数字
计算出的结果值。

API编辑

标准的 Painless API 可用。

示例编辑

要运行此示例,请先按照 上下文示例 中的步骤操作。

bucket_script 聚合中的 Painless 上下文提供了一个 params 映射。此映射包含用户指定的自定义值以及在 buckets_path 属性中指定的其他聚合的值。

此示例获取最小值和最大值聚合的值,计算差值,并将用户指定的 base_cost 添加到结果中

(params.max - params.min) + params.base_cost

请注意,这些值是从 params 映射中提取的。在上下文中,聚合看起来像这样

GET /seats/_search
{
  "size": 0,
  "aggs": {
    "theatres": {
      "terms": {
        "field": "theatre",
        "size": 10
      },
      "aggs": {
        "min_cost": {
          "min": {
            "field": "cost"
          }
        },
        "max_cost": {
          "max": {
            "field": "cost"
          }
        },
        "spread_plus_base": {
          "bucket_script": {
            "buckets_path": { 
              "min": "min_cost",
              "max": "max_cost"
            },
            "script": {
              "params": {
                "base_cost": 5 
              },
              "source": "(params.max - params.min) + params.base_cost"
            }
          }
        }
      }
    }
  }
}

buckets_path 指向两个聚合 (min_costmax_cost) 并将 min/max 变量添加到 params 映射中

用户指定的 base_cost 也被添加到脚本的 params 映射中