我正在尝试从当前时间开始,每5分钟对一个小时内的某个指标进行平均。因此,一个小时内将有12个数据点,其中每个数据点将是5分钟内该指标的平均值。当前,该指标每10秒就会转储到Elastic中。我能够编写以下查询:
GET /%3Cindexname-%7Bnow%2Fd%7D%3E/_search
{"size": 0,
"query":{
"range":{
"collectionTime":{
"gte":"now-1h/h",
"lt":"now/h",
"boost": 2.0
}
}
},
"aggs": {
"time_buckets": {
"date_histogram": {
"field": "collectionTime",
"interval": "300s"
},
"aggs": {
"some_avg": {
"avg": {
"field": "field_to_be_averaged"
}
}
}
}
}
}
此查询的问题是:
1)它生成13个存储桶,而不是12个。 2)不会从“ now”-“ now-5m”创建存储桶,依此类推。例如,如果此查询将在上午11:27运行,则期望的输出将是上午11:27-上午10:27的12个平均值。但是获得的输出是从9:30 am-10:30 am。猜猜日期直方图舍入为1,4或5的最接近倍数。
我计划在Java服务中实现此查询,该服务将使用其High Level Rest Client与Elastic对话。关于此的任何见解/指标都将非常有帮助!