🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Bucket Script Aggregation(桶脚本聚合) 父级管道聚合,它执行一个脚本,它可以在父级多桶聚合中指定度量参数执行每个桶计算。指定的度量必须是数字,脚本必须返回一个数值。 ## Syntax(语法) bucket_script聚合看起来像这样: | `{` `"bucket_script"``: {` `"buckets_path"``: {` `"my_var1"``: ``"the_sum"``,                     #``1` `"my_var2"``: ``"the_value_count"` `},` `"script"``: ``"params.my_var1 / params.my_var2"` `}` `}` | | 1 | 这里,my_var1是这个桶的路径中使用脚本中的变量的名字,the_sum是路径的度量所使用的变量。 | ## Table 11. `bucket_script` Parameters(Table 11.bucket_script参数) | 参数名称 | 描述 | 是否必要 | 默认值 | | --- | --- | --- | --- | | `script` | 在这个聚合上运行的脚本。这个脚本可以是内置的,文件或索引。(详细信息,请查阅Scripting) | 必须 |   | | `buckets_path` | 脚本变量的映射,以及我们希望用于桶的变量的相关路径(相关详细信息,请参阅“buckets_path Syntax”一节) | 必须 |   | | `gap_policy` | 在数据中找到差异时应用的策略(相关详情,请参阅“Dealing with gaps in the data”一节) | 可选 | `skip` | | `format` | 应用于此聚合的输出值的格式 | 可选 | `null` | 以下代码计算了T恤销售额与每月销售额的比例: | `POST /sales/_search` `{` `"size"``: ``0``,` `"aggs"` `: {` `"sales_per_month"` `: {` `"date_histogram"` `: {` `"field"` `: ``"date"``,` `"interval"` `: ``"month"` `},` `"aggs"``: {` `"total_sales"``: {` `"sum"``: {` `"field"``: ``"price"` `}` `},` `"t-shirts"``: {` `"filter"``: {` `"term"``: {` `"type"``: ``"t-shirt"` `}` `},` `"aggs"``: {` `"sales"``: {` `"sum"``: {` `"field"``: ``"price"` `}` `}` `}` `},` `"t-shirt-percentage"``: {` `"bucket_script"``: {` `"buckets_path"``: {` `"tShirtSales"``: ``"t-shirts>sales"``,` `"totalSales"``: ``"total_sales"` `},` `"script"``: ``"params.tShirtSales / params.totalSales * 100"` `}` `}` `}` `}` `}` `}` | 以下是响应信息: | `{` `"took"``: ``11``,` `"timed_out"``: ``false``,` `"_shards"``: ...,` `"hits"``: ...,` `"aggregations"``: {` `"sales_per_month"``: {` `"buckets"``: [` `{` `"key_as_string"``: ``"2015/01/01 00:00:00"``,` `"key"``: ``1420070400000``,` `"doc_count"``: ``3``,` `"total_sales"``: {` `"value"``: ``550.0` `},` `"t-shirts"``: {` `"doc_count"``: ``1``,` `"sales"``: {` `"value"``: ``200.0` `}` `},` `"t-shirt-percentage"``: {` `"value"``: ``36.36363636363637` `}` `},` `{` `"key_as_string"``: ``"2015/02/01 00:00:00"``,` `"key"``: ``1422748800000``,` `"doc_count"``: ``2``,` `"total_sales"``: {` `"value"``: ``60.0` `},` `"t-shirts"``: {` `"doc_count"``: ``1``,` `"sales"``: {` `"value"``: ``10.0` `}` `},` `"t-shirt-percentage"``: {` `"value"``: ``16.666666666666664` `}` `},` `{` `"key_as_string"``: ``"2015/03/01 00:00:00"``,` `"key"``: ``1425168000000``,` `"doc_count"``: ``2``,` `"total_sales"``: {` `"value"``: ``375.0` `},` `"t-shirts"``: {` `"doc_count"``: ``1``,` `"sales"``: {` `"value"``: ``175.0` `}` `},` `"t-shirt-percentage"``: {` `"value"``: ``46.666666666666664` `}` `}` `]` `}` `}` `}` |