桶选择器聚合上下文编辑

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

变量编辑

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

返回编辑

布尔值
如果应该保留桶,则为真;如果应该过滤掉桶,则为假。

API编辑

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