Язык поисковых запросов в Graylog

Синтаксис языка поисковых запросов в Graylog

Синтаксис поиска очень близок к синтаксису Lucene. По умолчанию все поля сообщения включены в поиск, если вы не указали поле сообщения, в котором проводить поиск.

Сообщения, содержащие термин ssh:

ssh

Сообщения, содержащие термин ssh или login:

ssh login

Сообщения, содержащие точную фразу ssh login:

"ssh login"

Сообщения, в которых поле type содержит ssh:

type:ssh

Сообщения, в которых поле type включает в себя ssh или login:

type:(ssh login)

Сообщения, в которых поле type содержит точную фразу ssh login:

type:"ssh login"

Сообщения с полем type:

_exists_:type

Сообщения, которые не имеют поля type:

NOT _exists_:type

Сообщения, которые соответствуют регулярному выражению ethernet[0-9]+ в поле type

type:/ethernet[0-9]+/

По умолчанию все термины или фразы в поисковом запросе связаны между собой по логическому типу OR (ИЛИ), поэтому возвращаются все сообщения, имеющие хотя бы одно попадание. Можно использовать использовать Булевы операторы и группы для поиска:

"ssh login" AND source:example.org

("ssh login" AND (source:example.org 
                  OR source:another.example.org)) 
OR _exists_:always_find_me

Вы также можете использовать оператор NOT:

"ssh login" AND NOT source:example.org
NOT example.org

Обратите внимание, что AND, OR и NOT чувствительны к регистру и должны вводиться только в верхнем регистре.


Подстановочные знаки (wildcards)

Используйте ?, чтобы заменить один символ, или *, чтобы заменить ноль или более символов:

source:*.org
source:exam?le.org
source:exam?le.*

Обратите внимание, что ведущие символы подстановки (то есть использование символа подстановки с начала поискового запроса) отключены во избежание чрезмерного потребления памяти! Их можно включить в конфигурационном файле Graylog:

allow_leading_wildcard_searches = true

Также обратите внимание, что message, full_message и source - единственные поля, которые анализируются по умолчанию. Хотя поиск по шаблону (с использованием * и ?) работает со всеми индексированными полями, анализируемые поля будут вести себя немного иначе.

Нечеткость

Вы можете искать похожие термины:

ssh logni~
source:exmaple.org~

В этом примере используется расстояние Дамерау–Левенштейна со значением расстояния по умолчанию равным 2 и будет соответствовать «ssh login» и «example.org» (намеренно написано с ошибкой в ​​запросе).

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

source:exmaple.org~1

Вы также можете использовать оператор нечеткости, чтобы выполнить поиск близости, где термины в фразе могут иметь разные/нечеткие расстояния друг от друга и не должны быть в определенном порядке:

"foo bar"~5

Числовые поля поддерживают диапазонные запросы (range queries). Диапазоны в квадратных скобках проводят поиск включительно (то есть производят поиск включая указанные крайние значения), диапазоны в фигурных скобках проводят поиск исключительно (то есть производят поиск не включая указанные крайние значения) и могут даже быть объединенным:

http_response_code:[500 TO 504]
http_response_code:{400 TO 404}
bytes:{0 TO 64]
http_response_code:[0 TO 64}

Вы также можете выполнять поиск с одной стороны без ограничений:

http_response_code:>400
http_response_code:<400
http_response_code:>=400
http_response_code:<=400

Также возможно комбинировать операторы неограниченного диапазона:

http_response_code:(>=400 AND <500)

Экранирование (escaping)

Следующие символы должны быть экранированы обратным слэшем:

&& || : \ / + - ! ( ) { } [ ] ^ " ~ * ?

Пример:

resource:\/posts\/45326

Комментарии

Популярные сообщения из этого блога

Хэш-таблица: разрешение коллизий

Нормальные формы, пример нормализации в базе данных