Использование API
JDBC можно использовать через официальные пакеты java.sql и javax.sql:
java.sql
Первый через java.sql.Driver и DriverManager:
String address = "jdbc:es://" + elasticsearchAddress;
Properties connectionProperties = connectionProperties();
Connection connection =
DriverManager.getConnection(address, connectionProperties); | Сервер и порт, на котором Elasticsearch прослушивает HTTP-трафик. По умолчанию порт равен 9200. | |
| Свойства для подключения к Elasticsearch. Пустой объект |
javax.sql
Доступно через API javax.sql.DataSource:
EsDataSource dataSource = new EsDataSource(); String address = "jdbc:es://" + elasticsearchAddress; dataSource.setUrl(address); Properties connectionProperties = connectionProperties(); dataSource.setProperties(connectionProperties); Connection connection = dataSource.getConnection();
| Сервер и порт, на котором Elasticsearch прослушивает HTTP-трафик. По умолчанию 9200. | |
| Свойства для подключения к Elasticsearch. Пустой объект |
Какой из них использовать? Обычно клиентские приложения, предоставляющие большинство свойств конфигурации в URL, полагаются на стиль DriverManager, в то время как DataSource предпочтительнее, когда его передают, поскольку его можно настроить в одном месте, а потребителю достаточно вызвать getConnection, не беспокоясь о каких-либо других свойствах.
Для подключения к защищенному серверу Elasticsearch, объект Properties должен выглядеть так:
Properties properties = new Properties();
properties.put("user", "test_admin");
properties.put("password", "x-pack-test-password"); После получения подключения его можно использовать как любое другое JDBC-соединение. Например:
try (Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery(
" SELECT name, page_count"
+ " FROM library"
+ " ORDER BY page_count DESC"
+ " LIMIT 1")) {
assertTrue(results.next());
assertEquals("Don Quixote", results.getString(1));
assertEquals(1072, results.getInt(2));
SQLException e = expectThrows(SQLException.class, () ->
results.getInt(1));
assertThat(e.getMessage(), containsString("Unable to convert "
+ "value [Don Quixote] of type [TEXT] to [Integer]"));
assertFalse(results.next());
} Elasticsearch SQL не предоставляет механизм пулинга соединений, поэтому создаваемые JDBC-драйвером соединения не пулируются. Для достижения пулирования соединений требуется механизм пулинга соединений сторонних разработчиков. Настройка и настройка стороннего поставщика выходит за рамки этой документации.
© 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/7.17/_api_usage.html