Основы поиска 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