API usage
editAPI usage
editThis functionality is in beta and is subject to change. The design and code is less mature than official GA features and is being provided as-is with no warranties. Beta features are not subject to the support SLA of official GA features.
One can use JDBC through the official java.sql
and javax.sql
packages:
java.sql
editThe former through java.sql.Driver
and DriverManager
:
javax.sql
editAccessible through the javax.sql.DataSource
API:
EsDataSource dataSource = new EsDataSource(); String address = "jdbc:es://" + elasticsearchAddress; dataSource.setUrl(address); Properties connectionProperties = connectionProperties(); dataSource.setProperties(connectionProperties); Connection connection = dataSource.getConnection();
The server and port on which Elasticsearch is listening for HTTP traffic. By default 9200. |
|
Properties for connecting to Elasticsearch. An empty |
Which one to use? Typically client applications that provide most
configuration properties in the URL rely on the DriverManager
-style
while DataSource
is preferred when being passed around since it can be
configured in one place and the consumer only has to call getConnection
without having to worry about any other properties.
To connect to a secured Elasticsearch server the Properties
should look like:
Properties properties = new Properties(); properties.put("user", "test_admin"); properties.put("password", "x-pack-test-password");
Once you have the connection you can use it like any other JDBC connection. For example:
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()); }