APIの使用
JDBCは公式の java.sql
と javax.sql
パッケージを通じて使用できます:
java.sql
前者は java.sql.Driver
と DriverManager
を通じて:
Java
String address = "jdbc:es://" + elasticsearchAddress;
Properties connectionProperties = connectionProperties();
Connection connection =
DriverManager.getConnection(address, connectionProperties);
ElasticsearchがHTTPトラフィックをリッスンしているサーバーとポート。デフォルトのポートは9200です。 | |
Elasticsearchに接続するためのプロパティ。空の Properties インスタンスは、セキュリティがないElasticsearchには問題ありません。 |
javax.sql
javax.sql.DataSource
APIを通じてアクセス可能:
Java
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に接続するためのプロパティ。空の Properties インスタンスは、セキュリティがないElasticsearchには問題ありません。 |
どちらを使用するべきですか?通常、URLでほとんどの構成プロパティを提供するクライアントアプリケーションは DriverManager
スタイルに依存し、DataSource
は渡されるときに好まれます。なぜなら、1か所で構成でき、消費者は他のプロパティを気にせずに getConnection
を呼び出すだけで済むからです。
セキュリティがあるElasticsearchサーバーに接続するには、Properties
は次のようになります:
Java
Properties properties = new Properties();
properties.put("user", "test_admin");
properties.put("password", "x-pack-test-password");
接続が確立されたら、他のJDBC接続と同様に使用できます。例えば:
Java
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ドライバーが作成する接続はプールされません。プール接続を実現するには、サードパーティの接続プーリングメカニズムが必要です。サードパーティプロバイダーの設定と構成は、このドキュメントの範囲外です。