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

Поиск

Общее описание

Компонент Поиск предназначен для работы с поисковыми запросами и результатами их выполнения.

Для того чтобы перейти в раздел компонента, в навигационном меню необходимо открыть пункт Основное - Поиск.

В верхней части страницы расположены поля ввода поискового запроса и указания временного интервала. Для того чтобы выполнить поиск по данным, необходимо сформировать запрос на языке Smart Monitor Language (далее SML), указать интересующий временной интервал и нажать кнопку Обновить.

Обращение к данным

Простейшим запросом является получение данных из хранилища с использованием команды source и указанием имени источника.

После выполнения такого поискового запроса на странице в качестве результата отобразится гистограмма распределения событий во времени, список самих событий, каждое из которых можно раскрыть и изучить значения полей, а также боковая панель, которая содержит список всех полей источника и позволяет получить статику по их значениям.

Такой формат обращения к данным удобен, когда необходимо получить обзорную информацию по источнику. Однако, в большинстве случаев работы с данными, необходимость состоит в том чтобы сформировать какую-либо выборку, выполнить фильтрацию, построить график зависимости от времени, вычислить какую-то метрику и тому подобное. Все эти операции реализует язык запросов SML.

Фильтрация данных

Команда search предназначена для выполнения первичной фильтрации событий. Команда поддерживает логические выражения, поиск по шаблону с использованием символа * и прочие виды сравнений. Команда fields предназначена для включения или исключения полей, отображаемых в каждом событии.

Расчёт статистики

Расчёт статистики реализуется командой aggs. При использовании команды, необходимо указать функцию агрегации. Функция агрегации может применяться целиком к событию, как, например, count, или к конкретному полю, например, в случае использования latest. Помимо этого может быть указан параметр группировки, используя ключевое слово by.

В примере, показанном выше, осуществляется вычисление количества входов и даты последнего входа по каждому из пользователей за двухнедельный период. Обратите внимание, что состав полей в результатах теперь определен командой aggs.

Преобразование данных

При возникновении необходимости, данные возможно всячески изменять и преобразовывать в другие форматы. Сделать это возможно при помощи команды eval. Команда позволяет создать в событиях новое поле, значением которого будет результат вычисления выражения после знака равно.

В приведенном примере показывается использование строковых, условных, криптографических, временных и математических функций. Комбинирование этих функций между собой позволит достигать нужного результата в большинстве сценариев обработки данных.

Визуализация данных

В предыдущем примере возможно заметить использование команды table. Команда table является одной из множества команд представления (визуализации) данных. Другим представлением данных может быть, например, временной график. Воспользовавшись командой timeaggs, можно достичь такого типа визуализации. Эта команда аналогична уже рассмотренной aggs, за тем различием что статистика строится в разрезе временного интервала, задаваемого параметром span.

При этом, как видно из примера, результат поиска автоматически будет открыт во вкладке Визуализация. В этой вкладке предоставляется возможность настройки типа визуализации и её параметров.

Постобработка данных

После первичной фильтрации и расчёта статистки иногда возникает необходимость дополнительно отфильтровать некоторые результаты. Для этих целей существует команда where.

В примере выше, первым шагом рассчитывается статистика по количеству операций для каждого вида действия за последние сутки. Вторым шагом выполняется фильтрация, которая позволяет исключить из статистики два вида действия, не интересующих пользователя.

Команда where в каком-то смысле аналогична команде search, но важно понимать их различие. Команда search исполняется на уровне движка хранилища данных и потому более оптимизирована при работе с большим количеством данных. Ограничением search является то, что команда может быть использована только на первой стадии поискового запроса. Напротив, команда where исполняется уже на данных после их извлечения из хранилища из-за чего имеет меньшую скорость обработки, но может использоваться в любом месте поискового запроса многократно.

Аналогичное справедливо и для прочих команд, выполняемых на уровне движка хранилища. У всех из них есть аналогичные команды, выполнение которых возможно на стадии постобработки: для aggs - это stats, для timeaggs - timechart, а для peval (painless eval) - уже рассмотренный eval.

Обогащение данных

Помимо исключения существующих полей из результатов поиска, язык SML также позволяет осуществлять включение в события новых полей. Это возможно при помощи механизмов, реализованных в командах join и lookup. В случае c join, данные обогащаются результатами подзапроса. В случае с lookup - из предварительно определенного справочника.

Для создания справочника, в навигационном меню необходимо открыть пункт Lookup Manager - Создание справочника.

Далее необходимо заполнить справочник записями. Это возможно сделать вручную, через импорт файла или командой outputlookup.

После чего использование этого справочника станет доступно в запросах с командой lookup.

В данной статье были рассмотрены основные концепции компонента Поиск. Более глубокое изложение по теме доступно к изучению в данном разделе. Список всех команд SML расположен здесь.