Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›SQL ›SQL JDBC

Использование 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. Для небезопасного Elasticsearch достаточно пустой экземпляр Properties.

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. Для небезопасного Elasticsearch достаточно пустой экземпляр Properties.

Какой из них использовать? Обычно клиентские приложения, которые предоставляют большинство свойств конфигурации в 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/8.17/_api_usage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API