SQL JDBC

ElasticsearchのSQL JDBCドライバーは、Elasticsearch用の豊富で完全な機能を持つJDBCドライバーです。これはType 4ドライバーであり、プラットフォームに依存せず、スタンドアロンで、データベースに直接接続する純粋なJavaドライバーで、JDBC呼び出しをElasticsearch SQLに変換します。

Installation

JDBCドライバーは以下から入手できます:

  • 専用ページ
  • elastic.coは、通常手動ダウンロード用のリンクを提供します。
  • Maven依存関係
  • Maven互換のツールは、依存関係として自動的に取得できます:

Xml

  1. <dependency>
  2. <groupId>org.elasticsearch.plugin</groupId>
  3. <artifactId>x-pack-sql-jdbc</artifactId>
  4. <version>8.15.2</version>
  5. </dependency>

Maven Central Repositoryから、またはartifacts.elastic.co/mavenに追加してリポジトリリストから取得できます:

Xml

  1. <repositories>
  2. <repository>
  3. <id>elastic.co</id>
  4. <url>https://artifacts.elastic.co/maven</url>
  5. </repository>
  6. </repositories>

Version compatibility

ドライバーは、使用しているElasticsearchのバージョンと互換性がある必要があります。

ドライバーのバージョンは、Elasticsearchのバージョンより新しくてはなりません。たとえば、Elasticsearchバージョン7.10.0は8.15.2ドライバーと互換性がありません。

Elasticsearchバージョン 互換性のあるドライバーバージョン
8.0.0–8.15.2 - 同じバージョン

- 以前の8.xバージョンのいずれか

- 7.7.0以降の任意の7.xバージョン。
Elasticsearch 8.15.2は8.15.2および以前の8.xドライバーと互換性があります。Elasticsearch 8.15.2は7.7.0以降の7.xドライバーとも互換性があります。
7.7.1-7.17 - 同じバージョン

- 7.7.0までの以前の7.xバージョン。
Elasticsearch 7.10.0は7.7.0-7.10.0ドライバーと互換性があります。
7.7.0およびそれ以前のバージョン - 同じバージョン。 Elasticsearch 7.6.1は7.6.1ドライバーのみと互換性があります。

Setup

ドライバーのメインクラスはorg.elasticsearch.xpack.sql.jdbc.EsDriverです。ドライバーはJDBC 4.0 Service Providerメカニズムを実装しているため、クラスパスに存在する限り自動的に登録されます。

一度登録されると、ドライバーは次の構文をURLとして理解します:

Text

  1. jdbc:[es|elasticsearch]://[[http|https]://]?[host[:port]]?/[prefix]?[\?[option=value]&]*
  • jdbc:[es|elasticsearch]://
  • プレフィックス。必須。
  • [[http|https]://]
  • 作成するHTTP接続のタイプ。可能な値はhttp(デフォルト)またはhttpsです。オプション。
  • [host[:port]]
  • ホスト(デフォルトではlocalhost)とポート(デフォルトでは9200)。オプション。
  • [prefix]
  • プレフィックス(デフォルトでは空)。通常、特定のパスの下でElasticsearchをホストする際に使用されます。オプション。
  • [option=value]
  • JDBCドライバーのプロパティ。デフォルトでは空。オプション。

ドライバーは次のプロパティを認識します:

Essential

  • timezone(デフォルトJVMタイムゾーン)
  • ドライバーが接続ごとに使用するタイムゾーンはIDによって示されます。強く設定することをお勧めします(たとえば、UTC)JVMタイムゾーンは異なる可能性があり、JVM全体に対してグローバルであり、セキュリティマネージャーの下で実行しているときに簡単に変更できません。

Network

  • connect.timeout(デフォルト30000
  • 接続タイムアウト(ミリ秒単位)。サーバーへの接続を待つ最大時間です。
  • network.timeout(デフォルト60000
  • ネットワークタイムアウト(ミリ秒単位)。ネットワークを待つ最大時間です。
  • page.size(デフォルト1000
  • ページサイズ(エントリ単位)。サーバーによって返されるページごとの結果の数です。
  • page.timeout(デフォルト45000
  • ページタイムアウト(ミリ秒単位)。サーバー上のスクロールカーソルの最小保持期間です。サーバー側で状態を持つスクロールカーソルを必要とするクエリは、このタイムアウト後に失敗する可能性があります。したがって、大きな結果セットをスクロールする際には、page.sizeレコードの処理にpage.timeoutミリ秒以上かかってはいけません。
  • query.timeout(デフォルト90000
  • クエリタイムアウト(ミリ秒単位)。クエリが返されるのを待つ最大時間です。

Basic Authentication

  • user
  • ベーシック認証のユーザー名
  • password
  • ベーシック認証のパスワード

SSL

  • ssl(デフォルトfalse
  • SSLを有効にする
  • ssl.keystore.location
  • キーストア(使用する場合)の場所
  • ssl.keystore.pass
  • キーストアのパスワード
  • ssl.keystore.type(デフォルトJKS
  • キーストアのタイプ。PKCS12は一般的な代替フォーマットです
  • ssl.truststore.location
  • トラストストアの場所
  • ssl.truststore.pass
  • トラストストアのパスワード
  • ssl.truststore.type(デフォルトJKS
  • トラストストアのタイプ。PKCS12は一般的な代替フォーマットです
  • ssl.protocol(デフォルトTLS
  • 使用するSSLプロトコル

Proxy

  • proxy.http
  • HTTPプロキシのホスト名
  • proxy.socks
  • SOCKSプロキシのホスト名

Mapping

  • field.multi.value.leniency(デフォルトtrue
  • 複数の値を持つフィールドに対して、最初の値を返すか(保証はありません - 通常は自然な昇順で最初の値)、例外をスローするかを指定します。

Index

  • index.include.frozen(デフォルトfalse
  • クエリ実行時に凍結インデックスを含めるかどうか(デフォルト)。

Cluster

  • catalog
  • クエリのデフォルトカタログ(クラスター)。指定しない場合、クエリはローカルクラスター内のデータのみを実行します。
    [preview] この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。 クロスクラスター検索を参照してください。

Error handling

  • allow.partial.search.results(デフォルトfalse
  • シャードの失敗時に部分的な結果を返すか、クエリを失敗させて基礎となる例外をスローするか(デフォルト)。

Troubleshooting

  • debug(デフォルトfalse
  • trueに設定すると、デバッグログが有効になります。
  • debug.output(デフォルトerr
  • デバッグログの宛先。デフォルトでは、標準エラーに送信されます。値outは、ログを標準出力にリダイレクトします。ファイルパスも指定できます。

Additional

  • validate.properties(デフォルトtrue
  • 無効にすると、スペルミスや認識できないプロパティを無視します。有効にすると、提供されたプロパティが認識できない場合に例外がスローされます。

すべてをまとめると、次のURL:

Text

  1. jdbc:es://http://server:3456/?timezone=UTC&page.size=250

は、ポート3456serverにElasticsearch SQL接続を開き、JDBC接続のタイムゾーンをUTCに設定し、ページサイズを250エントリに設定します。