Основы поиска Clickhouse
Синтаксис
Поиск по хранилищу Clickhouse выполняется при помощи команды source. Общий синтаксис запроса:
source clk:<connection_name>:<database_name>.<table_name>:<qsize>
| Параметр | Синтаксис | По умолчанию | Описание |
|---|---|---|---|
connection_name | <string> | См. соединение по умолчанию. | Название Search Anywhere соединения. |
database_name | <string> | default | Название базы данных, в которой находится таблица |
table_name | <string> | Название таблицы, из которой запрашиваются данные. | |
qsize | <int> | 1000000, при запросе через web-интерфейс 1000. | Максимальное количество выбираемых данных. |
Источник Clickhouse поддерживает следующие опциональные аргументы:
qsize- максимальное количество выбираемых данныхtimefield- имя поля в котором хранится временная меткаearliest- начальная временная метка поискаlatest- конечная временная метка поиска
Подробное описание см. в команде source.
Соединение по умолчанию
Название соединения по умолчанию хранится в _cluster/settings в поле sme.sa.click.default_connection.
Примеры запросов данных из Clickhouse
Пример 1
Запрос 150 событий из таблицы default.sysmon при помощи соединения click.
source clk:click:sysmon:150
Пример 2
Запрос 1000 событий из таблицы default.zabbix при помощи соединения по умолчанию.
Если размер выборки не указан явно, то при запросе через Web-интерфейс будет установлен лимит 1000, а при запросе через rest api - 1000000.
source clk:zabbix
Пример 3
Запрос 2000 событий из таблицы server.logs при помощи соединения по умолчанию в промежутке два дня назад и час назад, временная метка хранится в поле timestamp.
source clk:server.logs qsize = 2000 timefield=timestamp earliest=-2d latest=-1h
Особенности смешивания источников
При помощи команды source можно запрашивать несколько источников в рамках одного запроса. Это могут быть как несколько таблиц из Clickhouse, так и комбинация запросов к OpenSearch, Clickhouse и другим источникам. Для запроса нескольких источников нужно указать их через запятую. Объединение результатов при запросе к Clickhouse выполняется при помощи механизмов команды append.
Подробное описание см. в команде source.
Примеры запросов из нескольких источников
Пример 1
Запрос 1000 событий из таблицы zabbix и 1000 событий из таблицы sysmon.
source clk:zabbix, clk:sysmon
Пример 2
Запрос 100 событий из таблицы sysmon, 250 событий из таблицы zabbix в промежутке 1 день назад и сейчас и 2000 событий из индекса OpenSearch sysmon_operational.
source clk:sysmon:100, (clk:zabbix qsize=250 earliest=-1d), sysmon_operational qsize=2000
Timeline
Источник Clickhouse поддерживает расчет Timeline при помощи внутренних механизмов хранилища. В таком случае Timeline будет рассчитан для всех событий в запрашиваемом временном промежутке.
Если расчет Timeline при помощи Clickhouse невозможен, то он будет выполнен на основе событий, попавших в итоговую выборку.
Timeline может рассчитываться при помощи внутренних механизмов хранилища только если запрашивается одна таблица, а команды не изменяют количество событий в итоговой выборке.
Список доступных команд для расчета timeline при помощи Clickhouse:
Пример расчета Timeline при помощи Clickhouse:

Sidebar
Источник Clickhouse поддерживает расчет Sidebar при помощи внутренних механизмов хранилища. В таком случае на боковой панели будут выведены названия полей и их тип, а по нажатию будет выполняться расчет статистики для данного поля для всех событий в запрашиваемом временном промежутке.
Если расчет Sidebar при помощи Clickhouse невозможен, то он будет выполнен на основе событий, попавших в итоговую выборку.
Пример расчета Sidebar при помощи Clickhouse:

Пример расчета значений поля при помощи Clickhouse:

Nullable
Для того чтобы при отсутствии значения поля в него записался null, или чтобы присвоить полю значение null необходимо, чтобы поле имело свойство Nullable. В противном случае поле может принимать значение по умолчанию в зависимости от его типа:
- Int -
0 - String -
"" - Datetime -
1970-01-01 00:00:00