bin
Описание
Помещает непрерывные числовые значения в дискретные наборы(ячейки) по заданному полю <field>.
Синтаксис
| bin [<bin-options>...] <field> [AS <newfield>]
Обязательные аргументы
| Параметр | Синтаксис | Описание |
|---|---|---|
field | <field> | Название поля, по которому данные разделяются на ячейки. |
Опциональные аргументы
Определение лимитов и параметров для разделения данных при анализе:
| Параметр | Синтаксис | По умолчанию | Описание |
|---|---|---|---|
bins | bins=<int> | 100 | Максимальное количество отрезков для расчета. |
span | span = (+|-)<int>(s|m|h|d|w|month) | См. Предопределенные значения span. | Интервал для распределения отрезков. |
newfield | as <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 месяц |
Если не указан параметр span для числового поля, он рассчитывается как (максимальное значение поля) / (максимальное количество bins).
Нельзя указывать временной span (<int>(s|m|h|d|w|month)) для числового поля и числовой span (<int>) для временного поля.
Примеры запросов
В следующих примерах используется индекс auth_sessions:
| @timestamp | user | host | action | bytes |
|---|---|---|---|---|
| 2026-06-24T08:00:00Z | admin | dc-01 | logged-in | 1500 |
| 2026-06-24T08:15:00Z | admin | dc-01 | file-access | 3200 |
| 2026-06-24T08:30:00Z | admin | srv-01 | logged-in | 800 |
| 2026-06-24T09:00:00Z | john.doe | workstation-01 | logged-in | 1200 |
| 2026-06-24T09:10:00Z | john.doe | workstation-01 | file-access | 4500 |
| 2026-06-24T09:20:00Z | john.doe | workstation-02 | logged-in | 950 |
| 2026-06-24T10:00:00Z | guest | kiosk-01 | logged-in | 300 |
Пример 1
В данном примере bin округляет временное поле @timestamp вниз до ближайших 30 минут. stats подсчитывает количество событий в каждом интервале.
source auth_sessions
| bin span=30m @timestamp
| stats count by @timestamp
События 08:00 и 08:15 попадают в один интервал 08:00, события 09:00, 09:10 и 09:20 - в интервал 09:00:
| @timestamp | count |
|---|---|
| 2026-06-24T08:00:00.000Z | 2 |
| 2026-06-24T08:30:00.000Z | 1 |
| 2026-06-24T09:00:00.000Z | 3 |
| 2026-06-24T10:00:00.000Z | 1 |
Пример 2
В данном примере bin разбивает числовое поле bytes на интервалы шириной 1000. stats подсчитывает количество событий в каждом диапазоне.
source auth_sessions
| bin span=1000 bytes
| stats count by bytes
| bytes | count |
|---|---|
| 0 - 1000 | 3 |
| 1000 - 2000 | 2 |
| 3000 - 4000 | 1 |
| 4000 - 5000 | 1 |
Пример 3
В данном примере результат округления сохраняется в новое поле bytes_bucket через as, исходное поле bytes остается без изменений.
source auth_sessions
| bin span=1000 bytes as bytes_bucket
| table @timestamp, user, bytes, bytes_bucket
| @timestamp | user | bytes | bytes_bucket |
|---|---|---|---|
| 2026-06-24T08:00:00Z | admin | 1500 | 1000 - 2000 |
| 2026-06-24T08:15:00Z | admin | 3200 | 3000 - 4000 |
| 2026-06-24T08:30:00Z | admin | 800 | 0 - 1000 |
| 2026-06-24T09:00:00Z | john.doe | 1200 | 1000 - 2000 |
| 2026-06-24T09:10:00Z | john.doe | 4500 | 4000 - 5000 |
| 2026-06-24T09:20:00Z | john.doe | 950 | 0 - 1000 |
| 2026-06-24T10:00:00Z | guest | 300 | 0 - 1000 |
Пример 4
В данном примере параметр bins=3 задает максимальное количество интервалов. Ширина интервала рассчитывается автоматически как max_value / bins - для поля bytes это 4500 / 3 = 1500.
source auth_sessions
| bin bins=3 bytes
| stats count by bytes
| bytes | count |
|---|---|
| 0 - 1500 | 4 |
| 1500 - 3000 | 1 |
| 3000 - 4500 | 1 |