Link Search Menu Expand Document Documentation Menu

桶选择器聚合

bucket_selector 聚合是一个父管道聚合,它通过评估脚本来确定 histogram(或 date_histogram)聚合返回的桶是否应包含在最终结果中。

与创建新值的管道聚合不同,bucket_selector 聚合充当过滤器,根据指定的标准保留或删除整个桶。使用此聚合可以根据桶的计算指标来筛选桶。

参数

bucket_selector 聚合支持以下参数。

参数 必需/可选 数据类型 描述
buckets_path 必需 对象 变量名到桶化指标的映射,用于标识脚本中要使用的指标。指标必须是数值类型。参见脚本变量
script(脚本) 必需 字符串或对象 要执行的脚本。可以是内联脚本、存储脚本或脚本文件。脚本可以访问 buckets_path 参数中定义的变量名。必须返回一个布尔值。返回 false 的桶将从最终输出中移除。
gap_policy 可选 字符串 应用于缺失数据的策略。有效值为 skipinsert_zeros。默认为 skip。参见数据间隙

示例

以下示例使用 OpenSearch Dashboards 电子商务样本数据创建一个日期直方图,间隔为一周。sum 子聚合计算每周的所有销售额总和。最后,bucket_selector 聚合筛选出结果周桶,移除所有总和不超过 $75,000 的桶。

GET opensearch_dashboards_sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "sales_per_week": {
      "date_histogram": {
        "field": "order_date",
        "calendar_interval": "week"
      },
      "aggs": {
        "weekly_sales": {
          "sum": {
            "field": "taxful_total_price",
            "format": "$#,###.00"
          }
        },
        "avg_vendor_spend": {
          "bucket_selector": {
            "buckets_path": {
              "weekly_sales": "weekly_sales"
            },
            "script": "params.weekly_sales > 75000"
          }
        }
      }
    }
  }
}

示例响应

该聚合返回符合脚本条件的 sales_per_week 桶。

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 4675,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "sales_per_week": {
      "buckets": [
        {
          "key_as_string": "2025-03-31T00:00:00.000Z",
          "key": 1743379200000,
          "doc_count": 1048,
          "weekly_sales": {
            "value": 79448.60546875,
            "value_as_string": "$79,448.61"
          }
        },
        {
          "key_as_string": "2025-04-07T00:00:00.000Z",
          "key": 1743984000000,
          "doc_count": 1048,
          "weekly_sales": {
            "value": 78208.4296875,
            "value_as_string": "$78,208.43"
          }
        },
        {
          "key_as_string": "2025-04-14T00:00:00.000Z",
          "key": 1744588800000,
          "doc_count": 1073,
          "weekly_sales": {
            "value": 81277.296875,
            "value_as_string": "$81,277.30"
          }
        }
      ]
    }
  }
}

因为它返回的是布尔值而不是数值,所以 buckets_selector 聚合不接受 format 参数。在此示例中,格式化的指标通过 sum 子聚合在 value_as_string 结果中返回。将其与 bucket_script 聚合中的示例进行对比。

剩余 350 字符

有问题?

想做贡献?