Я пытаюсь усреднить определенную метрику в течение каждых 5 минут в течение часа, от текущего времени.Таким образом, в течение часа будет 12 точек данных, где каждая точка данных будет представлять собой среднее значение этой метрики за 5 минут.В настоящее время метрика сбрасывается в Elastic каждые 10 секунд.Мне удалось написать следующий запрос:
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) Пакеты не создаются из«сейчас» - «сейчас-5м» и тд.Например, если бы этот запрос должен был быть выполнен в 11:27, желаемый результат был бы равен 12 усредненным значениям с 11:27 до 10:27.Но полученный вывод с 9:30 до 10:30.Угадайте, что гистограмма даты округляется до ближайшего кратного 1,4 или 5.
Я планирую реализовать этот запрос в Java-сервисе, который будет общаться с Elastic, используя его High Level Rest Client.Любые идеи / указания на это были бы очень полезны!