Агрегирование метрик на основе пользовательских интервалов (интервалов) - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь усреднить определенную метрику в течение каждых 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.Любые идеи / указания на это были бы очень полезны!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...