Bucket Script Aggregation(桶脚本聚合)
警告
此功能是实验性的,可能会在未来的版本中完全更改或删除。Elastic将采取最大的努力来解决任何问题,但实验功能不受SLA官方功能的支持。
父级管道聚合,它执行一个脚本,它可以在父级多桶聚合中指定度量参数执行每个桶计算。指定的度量必须是数字,脚本必须返回一个数值。
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}}]}}}
原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-bucket-script-aggregation.html(修改该链接为官网对应的链接)
译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10030393(修改该链接为 ApacheCN 对应的译文链接)
