Перейти к основному содержимому
Версия: 5.1

where

Описание

Выполняет уточняющий поиск по полученным данным.

Синтаксис

where <boolean-condition> | <boolean-function> [AND | OR | NOT <boolean-condition> | <boolean-function>]

Обязательные аргументы

ПараметрСинтаксисОписание
boolean-condition<field> > | >= | == | < | <= | != <field> |<value>Определяет условие сравнения. Сравнение может быть определено как поле <-> значение, так и поле <-> поле.
boolean-functionсм. функцииФункции, возвращающие boolean.

Список доступных функций:

предупреждение

При сравнении с null результат всегда false. null == null (false).


Примеры запросов

Пример 1

Фильтрация событий, где имя пользователя user точно соответствует значению Aleksey.

Пример №1
... | where user == "Aleksey"

Пример 2

Фильтрация событий, где объем переданных данных bytes превышает или равен 8749 байт.

Пример №2
... | where bytes >= 8749

Пример 3

Фильтрация событий, где объем переданных данных bytes превышает или равен 8749 байт или IP-адрес ipaddr равен 104.182.234.109.

Пример №3
... | where bytes >= 8749 or ipaddr == "104.182.234.109"

Пример 4

Создание булевого флага myVal для проверки типа соединения conn_type и фильтрация событий, где соединение не является vpn.

Пример №4
... | eval myVal=if(conn_type == "vpn", true(), false())
| where myVal == false()

Пример 5

Пример №5
... | where (winlog.computer_name == "VLG-WEB01" or source.host != "WS-IVANOV") and isnotnull(event.type)

Пример входных данных:

winlog.computer_namesource.hostevent.type
VLG-WEB01WS-PETROVstart
SRV-DB01WS-IVANOVchange
VLG-WEB01SRV-APP01null
SRV-WEB02WS-SIDOROVend

Результатом выполнения запроса может быть следующая таблица:

winlog.computer_namesource.hostevent.type
VLG-WEB01WS-PETROVstart
SRV-WEB02WS-SIDOROVend

Пример 6

Фильтрация событий, где HTTP-ответ response имеет клиентские или серверные коды ошибок и адрес назначения находится в подсети 192.168.12.0/24. Функция like использует шаблон с символом % для поиска строк, начинающихся с указанной цифры. Функция cidrmatch проверяет соответствие IP-адреса destination заданной подсети в формате CIDR.

Пример №6
... | where like(response, "4%") OR like(response, "5%") AND cidrmatch("190.100.10.0/24", destination)

Пример входных данных:

destinationresponse
190.100.10.10200
190.100.10.2404
190.100.10.22500
10.0.0.5403
190.100.10.25503

Результатом выполнения запроса может быть следующая таблица:

destinationresponse
190.100.10.2404
190.100.10.22500
190.100.10.25503

Пример 7

Развертывание multivalue-полей с последующим поиском и подсчетом событий для каждого значения из развернутых полей.

В данном примере система выполняет последовательную обработку данных для анализа товаров в заказах. Сначала команда stats агрегирует уникальные значения товаров в заказах в multivalue поле order_items для каждого события.

source orders-*
| stats values(order.items) as order_items

Затем mvexpand разворачивает multivalue поле, создавая отдельное событие для каждого товара.

| mvexpand order_items

Далее команда map с параметром maxsearches=30 выполняет подзапрос, фильтруя результат по имени товара item.name, совпадающему с текущим значением order_items.

| map maxsearches = 30 [source items-* qsize=1000 | where item.name == $order_items$]

В конце система агрегирует данные, подсчитывая количество вхождений каждого товара по полю item.name. Полный код представлен ниже:

Пример №7
source orders-*
| stats values(order.items) as order_items
| mvexpand order_items
| map maxsearches = 30 [source items-* qsize=1000 | where item.name == $order_items$]
| stats count by item.name

Пример входных данных в источнике orders-*:

order.iduserorder.items
1ivanov["iFruit", "Binco T-Shirt"]
2petrov["Binco T-Shirt", "Crowlex"]
3andreev["iFruit"]

Пример входных данных в источнике items-*:

item.iditem.nameitem.category
1iFruitelectronics
2Binco T-Shirtclothing
3Crowlexaccessories

Результатом выполнения запроса может быть следующая таблица:

item.namecount
iFruit2
Binco T-Shirt2
Crowlex1