SQL JDBC
Драйвер Elasticsearch SQL jdbc — это расширенный, полнофункциональный JDBC-драйвер для Elasticsearch. Это драйвер типа 4, то есть это независимый от платформы, автономный, прямой доступ к базе данных, чисто Java-драйвер, который преобразует вызовы JDBC в Elasticsearch SQL.
Установка
Драйвер JDBC можно получить из:
- Специальная страница
- elastic.co предоставляет ссылки, как правило, для ручной загрузки.
- Зависимость Maven
- Совместимые с Maven инструменты могут автоматически извлекать его как зависимость:
<dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>x-pack-sql-jdbc</artifactId> <version>8.17.3</version> </dependency>
из Центрального репозитория Maven, или из artifacts.elastic.co/maven, добавив его в список репозиториев:
<repositories>
<repository>
<id>elastic.co</id>
<url>https://artifacts.elastic.co/maven</url>
</repository>
</repositories> Совместимость версий
Ваш драйвер должен быть совместим с вашей версией Elasticsearch.
Версия драйвера не может быть новее, чем версия Elasticsearch. Например, версия Elasticsearch 7.10.0 несовместима с драйверами 8.17.3.
| Версия Elasticsearch | Совместимые версии драйверов | Пример |
|---|---|---|
8.0.0–8.17.3 |
| Elasticsearch 8.17.3 совместим с драйверами 8.17.3 и более ранними версиями 8.x. Elasticsearch 8.17.3 также совместим с драйверами 7.7.0 и более поздними версиями 7.x. |
7.7.1-7.17 |
| Elasticsearch 7.10.0 совместим с драйверами 7.7.0-7.10.0. |
7.7.0 и более ранние версии |
| Elasticsearch 7.6.1 совместим только с драйверами 7.6.1. |
Настройка
Главный класс драйвера — org.elasticsearch.xpack.sql.jdbc.EsDriver. Обратите внимание, что драйвер реализует механизм JDBC 4.0 Service Provider, что означает, что он регистрируется автоматически, если доступен в classpath.
После регистрации драйвер понимает следующий синтаксис в качестве URL:
jdbc:[es|elasticsearch]://[[http|https]://]?[host[:port]]?/[prefix]?[\?[option=value]&]*
-
jdbc:[es|elasticsearch]:// - Префикс. Обязательно.
-
[[http|https]://] - Тип устанавливаемого HTTP-соединения. Возможные значения:
http(по умолчанию) илиhttps. Необязательно. -
[host[:port]] - Хост (
localhostпо умолчанию) и порт (9200по умолчанию). Необязательно. -
[prefix] - Префикс (пустой по умолчанию). Обычно используется при размещении Elasticsearch по определенному пути. Необязательно.
-
[option=value] - Свойства для драйвера JDBC. Пусто по умолчанию. Необязательно.
Драйвер распознает следующие свойства:
Основные
-
timezone(временная зона JVM по умолчанию) - Временная зона, используемая драйвером для каждого соединения, указывается его
ID. Настоятельно рекомендуется установить её (например, наUTC), так как временная зона JVM может меняться, является глобальной для всей JVM и её нелегко изменить при работе под управлением диспетчера безопасности.
Сеть
-
connect.timeout(по умолчанию30000) - Тайм-аут соединения (в миллисекундах). Это максимальное время ожидания для установления соединения с сервером.
-
network.timeout(по умолчанию60000) - Сетевой тайм-аут (в миллисекундах). Это максимальное время ожидания сети.
-
page.size(по умолчанию1000) - Размер страницы (в записях). Количество результатов, возвращаемых сервером на каждой странице.
-
page.timeout(по умолчанию45000) - Тайм-аут страницы (в миллисекундах). Минимальный период хранения для курсора прокрутки на сервере. Запросы, требующие курсора прокрутки с состоянием на стороне сервера, могут завершиться ошибкой после этого тайм-аута. Поэтому при прокрутке больших наборов результатов обработка
page.sizeзаписей не должна занимать болееpage.timeoutмиллисекунд. -
query.timeout(по умолчанию90000) - Тайм-аут запроса (в миллисекундах). Это максимальное время ожидания возврата запроса.
Базовая аутентификация
-
user - Имя пользователя для базовой аутентификации
-
password - Пароль для базовой аутентификации
SSL
-
ssl(по умолчаниюfalse) - Включить SSL
-
ssl.keystore.location - Расположение хранилища ключей (если используется)
-
ssl.keystore.pass - Пароль хранилища ключей
-
ssl.keystore.type(по умолчаниюJKS) - Тип хранилища ключей.
PKCS12— распространенный альтернативный формат -
ssl.truststore.location - Расположение хранилища доверия
-
ssl.truststore.pass - Пароль хранилища доверия
-
ssl.truststore.type(по умолчаниюJKS) - Тип хранилища доверия.
PKCS12— распространенный альтернативный формат -
ssl.protocol(по умолчаниюTLS) - Используемый протокол SSL
Прокси
-
proxy.http - Имя хоста прокси-сервера HTTP
-
proxy.socks - Имя хоста прокси-сервера SOCKS
Сопоставление
-
field.multi.value.leniency(по умолчаниюtrue) - Следует ли быть снисходительным и возвращать первое значение (без каких-либо гарантий того, каким оно будет — обычно первое в естественном порядке возрастания) для полей с несколькими значениями (true) или вызывать исключение.
Индекс
-
index.include.frozen(по умолчаниюfalse) - Следует ли включать замороженные индексы в выполнение запроса или нет (по умолчанию).
Кластер
-
catalog -
Каталог (кластер) по умолчанию для запросов. Если не указано, запросы выполняются только для данных в локальном кластере.
[предварительный просмотр] Эта функция находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над исправлением любых проблем, но функции в техническом предварительном просмотре не подпадают под действие соглашения об уровне обслуживания официальных функций GA. См. поиск по кластерам.
Обработка ошибок
-
allow.partial.search.results(по умолчаниюfalse) - Возвращать ли частичные результаты в случае сбоя шарда или завершать запрос с ошибкой, вызывая основное исключение (по умолчанию).
Устранение неполадок
-
debug(по умолчаниюfalse) - Установка его в
trueвключит отладочное журналирование. -
debug.output(по умолчаниюerr) - Назначение отладочных журналов. По умолчанию они отправляются в стандартный поток ошибок. Значение
outперенаправит журналирование в стандартный поток вывода. Можно также указать путь к файлу.
Дополнительные параметры
-
validate.properties(по умолчаниюtrue) - Если отключено, будут игнорироваться любые ошибки орфографии или нераспознанные свойства. Если включено, будет выброшено исключение, если предоставленное свойство не может быть распознано.
В итоге, следующий URL:
jdbc:es://http://server:3456/?timezone=UTC&page.size=250
открывает соединение Elasticsearch SQL с server на порту 3456, устанавливая временную зону соединения JDBC в UTC и размер страницы в 250 записей.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/sql-jdbc.html