timeaggs
Описание
Выполняет поиск и генерацию массива данных, распределенных по временной шкале с помощью внутренних механизмов хранилища.
Использование timeaggs в запросе допустимо в случае, если перед ней находятся только команды, также работающие с внутренними механизмами хранилища. К ним относятся source, search и peval. Это условие должно выполняться и для всех подзапросов в запросе.
Синтаксис
timeaggs [<composite>] [<span>] [<timefield>] [<limit>] [<useother>]  <functions-expression> ["," <functions-expression>] [<by_expression>]
Обязательные аргументы
functions-expression Обязательно использование хотя бы одной из функций:
| Параметр | Синтаксис | Описание | 
|---|---|---|
| count | count | count(<field>) | Вычисляет количество событий, содержащих поле. Если поле не указано, рассчитывает общее количество событий. | 
| avg | avg(<field>) | Вычисляет среднее значение по заданному полю. | 
| dc | dc(<field>) | Вычисляет количество уникальных значений в заданном поле. | 
| max | max(<field>) | Вычисляет максимальное значение по заданному полю. | 
| min | min(<field>) | Вычисляет минимальное значение по заданному полю. | 
| sum | sum(<field>) | Вычисляет сумму значений по заданному полю. | 
| perc | perc(<field>, <percent>) | Вычисляет персентиль по заданному полю и проценту. | 
| median | median(<field>) | Вычисляет медиану по заданному полю. | 
Опциональные аргументы
| Параметр | Синтаксис | По умолчанию | Описание | 
|---|---|---|---|
| span | span=<span> | см. Предопределенные значения span | Определяет интервал для распределения отрезков. | 
| timefield | timefield=<field> | @timestamp | Имя поля в котором хранится временная метка. | 
| composite | composite=<boolean> | false | Дает возможность использования скроллинга в агрегациях и получить все возможные сегменты (buckets) с помощью нескольких запросов (аналогично scroll в stats). Может быть применен только при наличии группировки ( by полей). Количеством сегментов (buckets), которые будут возвращены в ответе имеет фиксированное значение —1000. | 
| limit | limit=<int> | 10 | Максимальное количество уникальных значений by_field, которые будут использоваться в названии столбцов результата. Остальные значения объединятся в полеOTHER. | 
| useother | useother=<boolean> | true | При значении falseпараметрlimitне учитывается. | 
| by_expression | by <field> | Имя поля для группировки значений. | 
Допустим следующий формат временных параметров: (+|-)<int>(s|m|h|d|w|month):
- s/sec/secs/second/seconds - секунды
- m/min/mins/minute/minutes - минуты
- h/hr/hrs/hour/hours - часы
- d/day/days - дни
- w/week/weeks - недели
- mon/month/months - месяцы
Если не указан параметр span для временного поля, будут действовать предопределенные параметры.
Перечень предопределенных параметров:
| Временной интервал | span | 
|---|---|
| последние 15 минут | 10 секунд | 
| последние 60 минут | 1 минута | 
| последние 4 часа | 5 минут | 
| последние 24 часа | 30 минут | 
| последние 7 дней | 1 день | 
| последние 30 дней | 1 день | 
| последний год | 1 месяц | 
Аргумент composite доступен при запросе к OpenSearch.
Aggregations в OpenSearch выполняют статистическую обработку по числовым типам полей или же keyword, если поле текстовое. В соответствии с этим для текстовых полей нужно дописывать <название поля>.keyword, это необходимо делать как в заданных, так и в by полях. Пример:
... | timeaggs avg(user.keyword), earliest(country.keyword) by event.keyword, user_count
Примеры запросов
Пример 1:
... | timeaggs span=1h avg(msgNums) by user.keyword
Пример 2:
... | timeaggs span=15m avg(log.offset) by source.keyword
Пример 3:
... | timeaggs composite=true span=3h count, max(log.offset)
Пример 4:
... | timeaggs span=5d perc(log.offset, 5)