SQL JDBC
ElasticsearchのSQL JDBCドライバーは、Elasticsearch用の豊富で完全な機能を持つJDBCドライバーです。これはType 4ドライバーであり、プラットフォームに依存せず、スタンドアロンで、データベースに直接接続する純粋なJavaドライバーで、JDBC呼び出しをElasticsearch SQLに変換します。
Installation
JDBCドライバーは以下から入手できます:
- 専用ページ
- elastic.coは、通常手動ダウンロード用のリンクを提供します。
- Maven依存関係
- Maven互換のツールは、依存関係として自動的に取得できます:
Xml
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>x-pack-sql-jdbc</artifactId>
<version>8.15.2</version>
</dependency>
Maven Central Repositoryから、またはartifacts.elastic.co/maven
に追加してリポジトリリストから取得できます:
Xml
<repositories>
<repository>
<id>elastic.co</id>
<url>https://artifacts.elastic.co/maven</url>
</repository>
</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
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
jdbc:es://http://server:3456/?timezone=UTC&page.size=250
は、ポート3456
のserver
にElasticsearch SQL接続を開き、JDBC接続のタイムゾーンをUTC
に設定し、ページサイズを250
エントリに設定します。