Составление запросов

Запрос — это первая часть фильтра FixIt!, которая отвечает за выбор объектов, данные по которым вы хотите просмотреть.

Вторая часть, Поля, отвечает за то, какие именно данные о выбранных объектах вы хотите вывести.

В этом разделе описано, как составлять запросы.

Структура и синтаксис запросов

Запрос состоит из:

аргументов (категорий объектов, по которым выполняется поиск),

значений (параметров конкретных объектов внутри категории).

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

Пример:

category_name: "files" AND arkstatus.file: (ts_malware OR ts_suspicious)

По этому запросу вы найдете все объекты типа «файл», у которых значение arkstatus.file соответствует значениям, которые присваиваются как вредоносным, так и подозрительным файлам.

Операторы запросов

Основные операторы, которые используются для объединения условий в запросе, — AND, OR и AND NOT.

Чтобы найти элементы, для которых одновременно выполняются все заданные условия, используйте оператор AND. Вместо него можно использовать символ (+) перед элементом.

Чтобы найти элементы, для которых выполняются любые из заданных условий, используйте оператор OR.

Чтобы найти элементы, для которых не выполняются заданные после этого оператора условия, используйте оператор AND NOT. Вместо него можно использовать символ (-) перед элементом.

Кроме того, в запросах используются символьные операторы.

В таблице ниже приведены символьные операторы, которые можно использовать при составлении запросов, и их значения.

Оператор

Значение

.

Заменяет любой символ. Пример:

ab. будет соответствовать результатам aba, abb, abz и т. д.

?

Относится к предыдущему символу, делая его опциональным в поиске. Пример:

abc? будет соответствовать результатам ab и abc.

+

Повторяет предыдущий символ минимум один раз. Пример:

ab+ будет соответствовать результатам ab, abb, abbb и т. д.

*

Повторяет предыдущий символ произвольное число раз и делает его опциональным. Пример:

ab* будет соответствовать результатам a, ab, abb, abbb и т. д.

{...}

В фигурных скобках указывается минимальное и максимальное число повторов предыдущего символа. Пример:

a{2} будет соответствовать результату aa

a{2,4} будет соответствовать результатам aa, aaa и aaaa

a{2,} будет соответствовать результатам со значением a, повторенным два раза или более.

|

Соответствует оператору OR. В результатах будут выведены совпадения как по левой, так и по правой части выражения, разделенного этим символом. Пример:

abc|xyz будет соответствовать результатам abc и xyz.

(…)

Объединяет значения в группы. Такая группа будет трактоваться как одно значение. Пример:

abc(def)? будет соответствовать результатам abc и abcdef, но не будет соответствовать abcd.

[…]

Выводит результаты, соответствующие одному из значений в скобках. Пример:

[abc] будет соответствовать результатам a, b, c

При добавлении знака дефиса (-) между значениями в квадратных скобках в результатах выводится диапазон, если дефис не стоит в начале и если он не экранирован с помощью знака \. Пример:

[a-c] будет соответствовать результатам a, b или c

[-abc] будет соответствовать результатам -, a, b или c (дефис будет считаться первым значением)

[abc\-] будет соответствовать результатам a, b, c или - (дефис экранирован)

^

Знак ^ перед значением в квадратных скобках означает, что значение или диапазон значений будут исключены из результатов. Пример:

[^abc] будет соответствовать всем результатам, кроме a, b или c

[^a-c] будет соответствовать всем результатам, кроме a, b или c

[^-abc] будет соответствовать всем результатам, кроме -, a, b или c

[^abc\-] будет соответствовать всем результатам, кроме a, b, c или -.

Диапазоны значений

Если требуется зайти по запросу объекты с типом данных «дата», «число» или «строка», для них можно указывать диапазоны значений.

Если крайние значения входят в нужный диапазон, используются квадратные скобки [...]: [min TO max]

Если крайние значения не входят в диапазон, используются фигурные скобки {...}: {min TO max}

Если крайнее значение входит в диапазон только с одной стороны: скобки комбинируются: [min TO max}

Если диапазон ограничен только с одной стороны, используется символ *: [min TO *]

Для обозначения диапазонов также используется упрощенный синтаксис.

Для диапазонов, ограниченных с одной стороны:

size:>10

size:>=10

size:<10

size:<=10

Для диапазонов, ограниченных с обеих сторон, в упрощенном синтаксисе применяется группировка условий:

size:(>=10 AND <20)

size:(+>=10 +<20)