移动百分位数聚合
编辑移动百分位数聚合
编辑给定一个有序的百分位数序列,移动百分位数聚合将在这些百分位数上滑动一个窗口,并允许用户计算累积百分位数。
这在概念上与移动函数管道聚合非常相似,只是它处理的是百分位数草图,而不是实际的桶值。
语法
编辑一个 moving_percentiles
聚合在单独使用时如下所示
{ "moving_percentiles": { "buckets_path": "the_percentile", "window": 10 } }
表 76. moving_percentiles
参数
参数名称 | 描述 | 必需 | 默认值 |
---|---|---|---|
|
目标百分位数的路径(有关详细信息,请参阅 |
必需 |
|
|
在直方图上“滑动”的窗口大小。 |
必需 |
|
|
窗口位置的偏移。 |
可选 |
0 |
moving_percentiles
聚合必须嵌入在 histogram
或 date_histogram
聚合中。它们可以像任何其他指标聚合一样嵌入
resp = client.search( size=0, aggs={ "my_date_histo": { "date_histogram": { "field": "date", "calendar_interval": "1M" }, "aggs": { "the_percentile": { "percentiles": { "field": "price", "percents": [ 1, 99 ] } }, "the_movperc": { "moving_percentiles": { "buckets_path": "the_percentile", "window": 10 } } } } }, ) print(resp)
response = client.search( body: { size: 0, aggregations: { my_date_histo: { date_histogram: { field: 'date', calendar_interval: '1M' }, aggregations: { the_percentile: { percentiles: { field: 'price', percents: [ 1, 99 ] } }, the_movperc: { moving_percentiles: { buckets_path: 'the_percentile', window: 10 } } } } } } ) puts response
const response = await client.search({ size: 0, aggs: { my_date_histo: { date_histogram: { field: "date", calendar_interval: "1M", }, aggs: { the_percentile: { percentiles: { field: "price", percents: [1, 99], }, }, the_movperc: { moving_percentiles: { buckets_path: "the_percentile", window: 10, }, }, }, }, }, }); console.log(response);
POST /_search { "size": 0, "aggs": { "my_date_histo": { "date_histogram": { "field": "date", "calendar_interval": "1M" }, "aggs": { "the_percentile": { "percentiles": { "field": "price", "percents": [ 1.0, 99.0 ] } }, "the_movperc": { "moving_percentiles": { "buckets_path": "the_percentile", "window": 10 } } } } } }
一个名为 “my_date_histo” 的 |
|
一个 |
|
最后,我们指定一个 |
移动百分位数是通过首先在字段上指定一个 histogram
或 date_histogram
来构建的。然后,您在该直方图中添加一个百分位数指标。最后,moving_percentiles
嵌入在直方图中。buckets_path
参数用于“指向”直方图内部的百分位数聚合(有关 buckets_path
语法的描述,请参阅buckets_path
语法)。
以下可能是响应
{ "took": 11, "timed_out": false, "_shards": ..., "hits": ..., "aggregations": { "my_date_histo": { "buckets": [ { "key_as_string": "2015/01/01 00:00:00", "key": 1420070400000, "doc_count": 3, "the_percentile": { "values": { "1.0": 151.0, "99.0": 200.0 } } }, { "key_as_string": "2015/02/01 00:00:00", "key": 1422748800000, "doc_count": 2, "the_percentile": { "values": { "1.0": 10.4, "99.0": 49.6 } }, "the_movperc": { "values": { "1.0": 151.0, "99.0": 200.0 } } }, { "key_as_string": "2015/03/01 00:00:00", "key": 1425168000000, "doc_count": 2, "the_percentile": { "values": { "1.0": 175.25, "99.0": 199.75 } }, "the_movperc": { "values": { "1.0": 11.6, "99.0": 200.0 } } } ] } } }
moving_percentiles
聚合的输出格式继承自引用的percentiles
聚合的格式。
移动百分位数管道聚合始终使用 skip
间隙策略运行。
shift 参数
编辑默认情况下(当 shift = 0
时),用于计算的窗口是不包括当前桶的最后 n
个值。将 shift
增加 1 会将起始窗口位置向右移动 1
。
- 要将当前桶包含在窗口中,请使用
shift = 1
。 - 对于中心对齐(当前桶之前和之后各有
n / 2
个值),请使用shift = window / 2
。 - 对于右对齐(当前桶之后有
n
个值),请使用shift = window
。
如果任何窗口边缘移动到数据序列的边界之外,则窗口将缩小为仅包含可用值。