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