移动百分位数聚合
编辑移动百分位数聚合
编辑给定一系列有序的百分位数,移动百分位数聚合将在这些百分位数上滑动一个窗口,允许用户计算累积百分位数。
从概念上讲,这与移动函数管道聚合非常相似,只是它作用于百分位数草图而不是实际的桶值。
语法
编辑单独的moving_percentiles
聚合看起来像这样:
{ "moving_percentiles": { "buckets_path": "the_percentile", "window": 10 } }
表 77. 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 } } } } } }
在“timestamp”字段上构造一个名为“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
。
如果任一窗口边缘移到数据序列的边界之外,窗口将缩小以仅包含可用值。