APIの使用

JDBCは公式の java.sqljavax.sql パッケージを通じて使用できます:

java.sql

前者は java.sql.DriverDriverManager を通じて:

Java

  1. String address = "jdbc:es://" + elasticsearchAddress;
  2. Properties connectionProperties = connectionProperties();
  3. Connection connection =
  4. DriverManager.getConnection(address, connectionProperties);
ElasticsearchがHTTPトラフィックをリッスンしているサーバーとポート。デフォルトのポートは9200です。
Elasticsearchに接続するためのプロパティ。空の Properties
インスタンスは、セキュリティがないElasticsearchには問題ありません。

javax.sql

javax.sql.DataSource APIを通じてアクセス可能:

Java

  1. EsDataSource dataSource = new EsDataSource();
  2. String address = "jdbc:es://" + elasticsearchAddress;
  3. dataSource.setUrl(address);
  4. Properties connectionProperties = connectionProperties();
  5. dataSource.setProperties(connectionProperties);
  6. Connection connection = dataSource.getConnection();
ElasticsearchがHTTPトラフィックをリッスンしているサーバーとポート。デフォルトは9200です。
Elasticsearchに接続するためのプロパティ。空の Properties
インスタンスは、セキュリティがないElasticsearchには問題ありません。

どちらを使用するべきですか?通常、URLでほとんどの構成プロパティを提供するクライアントアプリケーションは DriverManager スタイルに依存し、DataSource渡されるときに好まれます。なぜなら、1か所で構成でき、消費者は他のプロパティを気にせずに getConnection を呼び出すだけで済むからです。

セキュリティがあるElasticsearchサーバーに接続するには、Properties は次のようになります:

Java

  1. Properties properties = new Properties();
  2. properties.put("user", "test_admin");
  3. properties.put("password", "x-pack-test-password");

接続が確立されたら、他のJDBC接続と同様に使用できます。例えば:

Java

  1. try (Statement statement = connection.createStatement();
  2. ResultSet results = statement.executeQuery(
  3. " SELECT name, page_count"
  4. + " FROM library"
  5. + " ORDER BY page_count DESC"
  6. + " LIMIT 1")) {
  7. assertTrue(results.next());
  8. assertEquals("Don Quixote", results.getString(1));
  9. assertEquals(1072, results.getInt(2));
  10. SQLException e = expectThrows(SQLException.class, () ->
  11. results.getInt(1));
  12. assertThat(e.getMessage(), containsString("Unable to convert "
  13. + "value [Don Quixote] of type [TEXT] to [Integer]"));
  14. assertFalse(results.next());
  15. }

Elasticsearch SQLは接続プーリングメカニズムを提供しないため、JDBCドライバーが作成する接続はプールされません。プール接続を実現するには、サードパーティの接続プーリングメカニズムが必要です。サードパーティプロバイダーの設定と構成は、このドキュメントの範囲外です。