Поиск событий

Пользователю доступны следующие типы поиска:
  • По словам. Если выбран этот тип поиска, слова, введенные в строку поиска, и разделенные пробелом, ищутся в записи вне зависимости от их последовательности. Запись будет найдена, если в ней имеются все слова из строки поиска. Поиск по словам не чувствительный к регистру, находит слова с учетом словоформ. Трактует специальные символы как обычные;
  • Фразой целиком. Если выбран этот тип поиска, то в результаты поиска попадут лишь те записи, в которых содержатся все слова из строки поиска в том же порядке. Поиск по фразе не чувствительный к регистру, не выполняет поиск с учетом словоформ. Трактует специальные символы как обычные;
  • Lucene. Если выбран этот тип поиска, то поиск будет выполнен с помощью языка Lucene.

Поиск отдельных слов и фраз

Поиск по словам и фразам производится по следующим столбцам:
  • модуль;
  • название события;
  • код события;
  • пользователь:
    • имя пользователя;
    • логин пользователя;
    • узел пользователя;
  • параметры метамодели;
  • сессия.
Например, если в поле записи имеется текст «слово1 слово2», а в строку поиска введена фраза «слово2 слово1», то запись будет найдена только при поиске по словам.

Поиск с помощью языка Lucene

Lucene — это свободная библиотека для высокоскоростного полнотекстового поиска, написанная на Java.
Основные особенности данной библиотеки:
  • высокоскоростная индексация;
  • мощный, точный и эффективный поисковый алгоритм.
Поиск с использованием языка Lucene осуществляется с помощью запросов.

Запросы и термы

Запросы состоят из термов и операторов. Термы бывают двух видов:
  • одно слово (single) — это обычные слова, например, «Попытка», «входа», «в», «систему»;
  • фраза (phrases) — это группа слов, например, «Попытка входа в систему».
Несколько термов можно связывать вместе при помощи логических операторов.

Поля

Lucene позволяет искать данные в заданном поле события. Для поиска по полю необходимо написать название этого поля, дальше поставить двоеточие и после него написать терм поиска.
Если терм взят в кавычки, то в результаты поиска попадут записи, найденные по фразе целиком.
Например, поиск по полю “description” терма “Попытка входа в систему” будет выглядеть следующим образом: description:"_Попытка входа в систему_"
На форме поиска событий возможен поиск по полям, описанным в таблице:
Название поляНаименование колонки/поля на форме ПоискПример
rootOperationUUID
UUID корневой операцииrootOperationUUID:f295e473-7d60-411b-87a3-d7ed55df62c9
ticket
Сессияticket:admin#7dd224ef058008393e73ddbd33f95afe1517576441328270
module
Модульmodule:AccessSystem
description
Название событияdescription:Попытка входа в систему
eventUUID
UUIDeventUUID:2cb7447b-6daa-4264-ae63-a6e62fb9abba* (звездочка обязательна)
eventType
Тип событияeventType:USER_EVENT
name
Код событияname:LOGIN_ATTEMPT
operationUUID
UUID операцииoperationUUID:f295e473-7d60-411b-87a3-d7ed55df62c9
parentOperationUUID
-parentOperationUUID:f295e473-7d60-411b-87a3-d7ed55df62c9
user
Пользовательuser:ivanov
isSuccess
РезультатisSuccess:false
tags
Тегиtags:“tag1,tag2,tag3”
Допустимо использование в указании терма масок.

Маски

Lucene позволяет производить поиск по маске. Для этого необходимо заменить часть текста на следующий символ:
  • ? — для замены одного символа;
  • * — для замены любого количества символов.
Примеры поиска по маске:description: Попытка входа *, description: Попытка входа в c?стему.
Lucene поддерживает использование этих символов для поиска одного слова, а не фразы. Символы «*» и «?» не рекомендуется использовать в начале поискового запроса.

Нечеткий поиск

Lucene поддерживает возможность нечеткого поиска. Для нечеткого поиска необходимо поставить символ «~» в конце одиночного терма. Коэффициент похожести задается следующим образом: «привит~0.8». По умолчанию значение коэффициента похожести равно 0.5. Для термов из нескольких слов символ «~» используется для указания максимального расстояния между ними.

Логические операции

Логические операции позволяют комбинировать несколько термов, например:
  • найти слово или фразу: eventType:ENTITY_CHANGE OR description:"Событие с параметром NULL";
  • или найти запись, содержащую сразу слово и фразу: eventType:USER_EVENT AND description:"Событие с параметром NULL";
  • или исключить фразу при наличии одного слова: eventType:USER_EVENT NOT description:"Событие с параметром NULL".
Все операторы должны быть указаны в верхнем регистре.
Также возможно задать обязательное слово (фразу) при помощи символа «+», например: +description:"Событие с параметром NULL" "Тестовая сущность".
В данном случае фраза «Событие с параметром NULL» должна обязательно содержаться в событии, а фразы «Тестовая сущность» может и не быть в событии вообще.
Аналогично, возможно исключить записи, содержащие слово (фразу), например: -description:"Событие с параметром NULL" "Тестовая сущность".
В этом случае в результатах поиска фразы «Событие с параметром NULL» не должно быть, а фраза «Тестовая сущность» может содержаться в результатах поиска.

Группировка

Lucene поддерживает использование скобок для группировки.
  • Для поиска «ibs» или «root» и «систему» используйте запрос: (ibs OR root) AND систему.
    Запрос найдет события, в которых есть слово «ibs» или слово «root», а также есть слово «систему».
  • Для поиска «Типа события», содержащего как «ENTITY_CHANGE», так и «USER_EVENT», используйте запрос: eventType:(ENTITY_CHANGE OR USER_EVENT).
    Запрос найдет типы событий, в которых есть ENTITY_CHANGE или USER_EVENT.
  • Для поиска в поле «Модуль», содержащего как слово «configurator», так и фразу «ott-service», используйте запрос: module:(configurator OR "ott-service").
    Запрос найдет записи с модулями «configurator» или «ott-service».
  • Для поиска в поле “Теги” (содержится в дополнительных параметрах) поиск по отдельному тегу осуществляется по запросу: tags:(*tag1*).
    Если в названии тега присутствует двоеточие, поиск выдаст ошибку, так как двоеточие используется в синтаксисе Lucene.
  • Поиск по обязательному вхождению: text:(+"fake-user" +"audit-test").
    Запрос найдет записи, в которых есть как пользователь «fake-user», так и модуль «audit-test».

Демопримеры

В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Аудит
Отправка произведённых в системе событий с уникальными идентификаторами и настраиваемым набором параметров
Предыдущий раздел
Быстрый старт
Следующий раздел
Пример взаимодействия с помощью Java-приложения
Была ли страница полезной?