文章目录世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
- pipeline
- 移动平均聚合:moving_avg
- 特点
- 作用
- 配置项
- 样式
- 实例
- 建索引
- 查询
- 结果
- 该功能在6.4.0被弃用,但是其功能与moving_fn类似,有很大参考价值
- 通过计算滑动窗口内数据的平均值来对连续数据进行平滑处理以使其变化趋势可视化
- buckets_path
- 桶路径
- model
- 加权模型
- 默认 :simple
- 模型值
- simple
- 简单的求窗口平均值
- 没有settings配置
- linear
- 线性加权,数据越老权重越低
- 没有settings配置
- ewma
- 指数加权,数据越老权重越低
- settings配置
- alpha : 默认0.3
- holt
- 增加第二个指数,表示趋势
- settings配置
- alpha : 默认0.3
- beta :默认0.1
- holt_winters
- 增加第三个指数,表示季节(时期)
- 有冷启动
- setttings配置
- alpha : 默认0.3
- beta :默认0.1
- gamma :默认0.3
- type
- add : 默认,增加季节影响
- mult :季节影响为相乘的关系
- period : 周期,默认1
- pad :将0处理为极小的数,值true或false
- simple
- gap_policy
- 数据之间出现间隙时的处理策略
- 默认 :skip
- window
- 滑动窗口的大小
- 默认 :5
- minimize
- 是否最小化
- 默认 :绝大多数model为false
- settings
- 模型的参数配置
- predict
- 预测,[实验性的]
- minimize
- 设置为true,可以优化settings的参数配置
{
"moving_avg": {
"buckets_path": "the_sum",
"model": "holt",
"window": 5,
"gap_policy": "insert_zeros",
"settings": {
"alpha": 0.8
}
}
}
实例
建索引
PUT /moving_avg_test
{
"mappings" : {
"properties" : {
"type" : {"type" : "integer"},
"num" : {"type" : "integer"},
"date" : {"type" : "date"}
}
}
}
POST /moving_avg_test/_bulk
{"index" : {"_id" : 1}}
{"type" : 1, "num" : 400, "date" : "2001-01-10"}
{"index" : {"_id" : 2}}
{"type" : 2, "num" : 450, "date" : "2001-01-20"}
{"index" : {"_id" : 3}}
{"type" : 1, "num" : 580, "date" : "2001-02-10"}
{"index" : {"_id" : 4}}
{"type" : 2, "num" : 990, "date" : "2001-02-20"}
{"index" : {"_id" : 5}}
{"type" : 1, "num" : 660, "date" : "2001-02-21"}
{"index" : {"_id" : 6}}
{"type" : 1, "num" : 430, "date" : "2001-03-10"}
{"index" : {"_id" : 7}}
{"type" : 2, "num" : 310, "date" : "2001-03-11"}
{"index" : {"_id" : 8}}
{"type" : 1, "num" : 760, "date" : "2001-04-10"}
{"index" : {"_id" : 9}}
{"type" : 2, "num" : 550, "date" : "2001-04-11"}
{"index" : {"_id" : 10}}
{"type" : 1, "num" : 1080, "date" : "2001-04-21"}
查询
- 由于被弃用,所以详细使用方式不再阐述
GET /moving_avg_test/_search
{
"size" : 0,
"aggs" : {
"month_aggs" : {
"date_histogram" : {
"field" : "date",
"calendar_interval" : "month"
},
"aggs" : {
"sum_aggs" : {
"sum" : {
"field" : "num"
}
},
"mving_sum_aggs" : {
"moving_avg" : {
"buckets_path" : "sum_aggs"
}
}
}
}
}
}
结果
{
"took" : 29,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"month_aggs" : {
"buckets" : [
{
"key_as_string" : "2001-01-01T00:00:00.000Z",
"key" : 978307200000,
"doc_count" : 2,
"sum_aggs" : {
"value" : 850.0
}
},
{
"key_as_string" : "2001-02-01T00:00:00.000Z",
"key" : 980985600000,
"doc_count" : 3,
"sum_aggs" : {
"value" : 2230.0
},
"mving_sum_aggs" : {
"value" : 850.0
}
},
{
"key_as_string" : "2001-03-01T00:00:00.000Z",
"key" : 983404800000,
"doc_count" : 2,
"sum_aggs" : {
"value" : 740.0
},
"mving_sum_aggs" : {
"value" : 1540.0
}
},
{
"key_as_string" : "2001-04-01T00:00:00.000Z",
"key" : 986083200000,
"doc_count" : 3,
"sum_aggs" : {
"value" : 2390.0
},
"mving_sum_aggs" : {
"value" : 1273.3333333333333
}
}
]
}
}
}



