桶选择器聚合上下文

编辑

bucket_selector 聚合中使用 Painless 脚本来确定是否应保留或过滤掉一个桶。

变量

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

返回

编辑
布尔值
如果应该保留桶,则为 True;如果应该过滤掉桶,则为 False。

可以使用标准的 Painless API

示例

编辑

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

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

与其他一些聚合上下文不同,bucket_selector 上下文必须返回布尔值 truefalse

此示例查找每个桶的最大值,添加用户指定的 base_cost,并保留所有大于 10 的桶。

params.max + params.base_cost > 10

请注意,这些值是从 params 映射中提取的。脚本的形式是一个返回 truefalse 的表达式。在上下文中,聚合看起来像这样:

GET /seats/_search
{
  "size": 0,
  "aggs": {
    "theatres": {
      "terms": {
        "field": "theatre",
        "size": 10
      },
      "aggs": {
        "max_cost": {
          "max": {
            "field": "cost"
          }
        },
        "filtering_agg": {
          "bucket_selector": {
            "buckets_path": { 
              "max": "max_cost"
            },
            "script": {
              "params": {
                "base_cost": 5 
              },
              "source": "params.max + params.base_cost > 10"
            }
          }
        }
      }
    }
  }
}

buckets_path 指向最大聚合 (max_cost) 并将 max 变量添加到 params 映射。

用户指定的 base_cost 也被添加到 params 映射。