SQL JDBC
Elastic Stack Serverless
Elasticsearch 的 SQL JDBC 驱动程序是一个功能丰富的、功能齐全的 Elasticsearch JDBC 驱动程序。 它是 Type 4 驱动程序,这意味着它是一个平台独立的、独立的、直接到数据库的纯 Java 驱动程序,可以将 JDBC 调用转换为 Elasticsearch SQL。
可以从以下位置获取 JDBC 驱动程序
- 专用页面
- elastic.co 提供了链接,通常用于手动下载。
- Maven 依赖项
- Maven 兼容的工具可以作为依赖项自动检索它
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>x-pack-sql-jdbc</artifactId>
<version>9.0.0</version>
</dependency>
从 Maven Central Repository 或从 artifacts.elastic.co/maven
通过将其添加到存储库列表
<repositories>
<repository>
<id>elastic.co</id>
<url>https://artifacts.elastic.co/maven</url>
</repository>
</repositories>
您的驱动程序必须与您的 Elasticsearch 版本兼容。
重要提示
驱动程序版本不能高于 Elasticsearch 版本。 例如,Elasticsearch 版本 7.10.0 与 9.0.0 驱动程序不兼容。
Elasticsearch 版本 | 兼容的驱动程序版本 | 示例 |
---|---|---|
7.7.0 和更早版本 | * 相同的版本。 |
Elasticsearch 7.6.1 仅与 7.6.1 驱动程序兼容。 |
驱动程序主类是 org.elasticsearch.xpack.sql.jdbc.EsDriver
。 请注意,该驱动程序实现了 JDBC 4.0 Service Provider
机制,这意味着只要它在类路径中可用,它就会自动注册。
注册后,驱动程序将以下语法理解为 URL
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 驱动程序的属性。 默认为空。 可选。
驱动程序识别以下属性
timezone
(默认 JVM 时区)- 驱动程序每个连接使用的时区,由其
ID
指示。 强烈建议将其设置为 (例如,UTC
),因为 JVM 时区可能会有所不同,对于整个 JVM 来说是全局的,并且在安全管理器下运行时无法轻松更改。
connect.timeout
(默认30000
)- 连接超时 (以毫秒为单位)。 这是等待与服务器建立连接的最长时间。
network.timeout
(默认60000
)- 网络超时 (以毫秒为单位)。 这是等待网络的最长时间。
page.size
(默认1000
)- 页面大小 (以条目为单位)。 服务器每页返回的结果数。
page.timeout
(默认45000
)- 页面超时 (以毫秒为单位)。 服务器上滚动光标的最短保留期限。 在服务器端需要有状态滚动光标的查询可能会在此超时后失败。 因此,当滚动浏览大型结果集时,处理
page.size
记录不应超过page.timeout
毫秒。 query.timeout
(默认90000
)- 查询超时 (以毫秒为单位)。 这是等待查询返回的最长时间。
user
- 基本身份验证用户名
password
- 基本身份验证密码
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.http
- HTTP 代理主机名
proxy.socks
- SOCKS 代理主机名
field.multi.value.leniency
(默认true
)- 对于具有多个值的字段,是否宽松地返回第一个值(不保证会是什么 - 通常是自然升序的第一个值)(true),还是引发异常。
index.include.frozen
(默认false
)- 是否在查询执行中包含冻结索引 (默认)。
catalog
-
查询的默认目录(集群)。 如果未指定,则查询仅在本地集群中的数据上执行。
[预览] 请参阅 跨集群搜索。
allow.partial.search.results
(默认false
)- 在分片失败的情况下,是否返回部分结果或使查询失败并引发基础异常 (默认)。
debug
(默认false
)- 将其设置为
true
将启用调试日志记录。 debug.output
(默认err
)- 调试日志的目标。 默认情况下,它们被发送到标准错误。 值
out
会将日志重定向到标准输出。 也可以指定文件路径。
validate.properties
(默认true
)- 如果禁用,它将忽略任何拼写错误或无法识别的属性。 启用后,如果提供的属性无法识别,则会引发异常。
要将所有内容放在一起,以下 URL
jdbc:es://http://server:3456/?timezone=UTC&page.size=250
在端口 3456
上打开到 server
的 Elasticsearch SQL 连接,并将 JDBC 连接时区设置为 UTC
,将其页面大小设置为 250
个条目。