seq-ql
Полнотекстовый поиск
Полнотекстовый поиск в seq-ql позволяет фильтровать результат по токенам документов. Запросы могут содержать точные фразы или ключевые слова, разделенные пробелами. Это поведение зависит от типа индекса, подробнее о формировании токенов см. виды индексов. При выполнении полнотекстового поиска система автоматически отбирает результаты, соответствующие заданному тексту.
По умолчанию поиск не чувствителен к регистру.
Это конфигурируется с помощью параметра --case-sensitive
и влияет только на новые документы.
Строковые литералы
В seq-ql можно использовать разные синтаксисы для строковых литералов при указании значений в фильтрах.
-
Без кавычек — можно использовать, если поле или значение состоят из одного слова без пробелов и специальных символов:
key: value
-
Одинарные кавычки (
'
) — позволяют указывать поля или значения, содержащие пробелы и специальные символы:ключ: 'значение с пробелами'
Внутри кавычек может быть escape-последовательность, которая всегда должна начинаться с символа
\
, пример:# Эквивалентно поиску: ключ:значение
ключ: '\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435'Поддерживаемые escape-последовательности:
- Подстановочные символы –
\*
- Кавычки и слэши –
\"
,\'
,\\
- Unicode –
\u
для 4-байтовых символов,\U
для 8-байтовых символов - Управляющие символы –
\n
,\r
- Байт –
\x
- Подстановочные символы –
-
Двойные кавычки (
"
) — аналогично одинарным кавычкам, но позволяют использовать одинарные кавычки внутри строки:"ключ": "значение с 'кавычками'"
-
Обратные кавычки (
`
) — используются для полей и значений, содержащих как одинарные, так и двойные кавычки:`ключ с пробелом`:`значение с "двойными" и 'одинарными' кавычками`
Важно: обратные кавычки не экранирует подстановочные и escape-последовательности, поэтому следующие примеры эквивалентны:
ключ: `\n` or ключ: `*`
ключ: '\\n' or ключ: '\*'
Логические операторы
seq-ql поддерживает логические операторы для более точного фильтра поиска. Операторы and
, or
, not
позволяют
комбинировать и усложнять запросы:
and
— используется для поиска, где оба условия должны быть истинными.or
— возвращает результаты, если одно из условий выполняется.not
— исключает результаты, соответствующие указанному условию.
Примеры:
message:error and level:critical
message:login or message:logout
not level:debug