Поиск событий
Пользователю доступны следующие типы поиска:
- По словам. Если выбран этот тип поиска, слова, введенные в строку поиска, и разделенные пробелом, ищутся в записи вне зависимости от их последовательности. Запись будет найдена, если в ней имеются все слова из строки поиска. Поиск по словам не чувствительный к регистру, находит слова с учетом словоформ. Трактует специальные символы как обычные;
- Фразой целиком. Если выбран этот тип поиска, то в результаты поиска попадут лишь те записи, в которых содержатся все слова из строки поиска в том же порядке. Поиск по фразе не чувствительный к регистру, не выполняет поиск с учетом словоформ. Трактует специальные символы как обычные;
- Lucene. Если выбран этот тип поиска, то поиск будет выполнен с помощью языка Lucene.
Пользователь выбирает тип поиска при определении параметров поиска в интерфейсе Аудита.
Поиск по словам и фразам производится по следующим столбцам:
- модуль;
- название события;
- код события;
- пользователь:
- имя пользователя;
- логин пользователя;
- узел пользователя;
- параметры метамодели;
- сессия.
Например, если в поле записи имеется текст
«слово1 слово2»
, а в строку поиска введена фраза «слово2 слово1»
, то запись будет найдена только при поиске по словам.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 | UUID | eventUUID: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»
.
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Аудит
Отправка произведённых в системе событий с уникальными идентификаторами и настраиваемым набором параметров