API 使用
编辑API 使用
编辑可以使用官方的 java.sql
和 javax.sql
包来使用 JDBC。
java.sql
编辑前者通过 java.sql.Driver
和 DriverManager
。
javax.sql
编辑可以通过 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();
Elasticsearch 监听 HTTP 流量的服务器和端口。默认端口为 9200。 |
|
连接 Elasticsearch 的属性。对于未经安全保护的 Elasticsearch,空的 |
使用哪一个?通常,在 URL 中提供大多数配置属性的客户端应用程序依赖于 DriverManager
样式,而当 DataSource
被传递时,则优先使用 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 驱动程序创建的连接不会被池化。为了实现池化连接,需要使用第三方连接池机制。配置和设置第三方提供程序不在本文档范围之内。