桶脚本聚合上下文

编辑

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

变量

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

返回值

编辑
数值
计算出的结果值。

标准的 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 映射中。