SQL JDBC

编辑

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>8.17.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 与 8.17.0 驱动程序不兼容。

Elasticsearch 版本 兼容的驱动程序版本 示例

8.0.0–8.17.0

  • 相同版本
  • 任何早期的 8.x 版本
  • 任何 7.7.0 之后的 7.x 版本。

Elasticsearch 8.17.0 与 8.17.0 和更早的 8.x 驱动程序兼容。Elasticsearch 8.17.0 也与 7.7.0 和更高版本的 7.x 驱动程序兼容。

7.7.1-7.17

  • 相同版本
  • 更早的 7.x 版本,追溯到 7.7.0。

Elasticsearch 7.10.0 与 7.7.0-7.10.0 驱动程序兼容。

7.7.0 及更早版本

  • 相同版本。

Elasticsearch 7.6.1 仅与 7.6.1 驱动程序兼容。

设置

编辑

驱动程序主类是 org.elasticsearch.xpack.sql.jdbc.EsDriver。请注意,该驱动程序实现了 JDBC 4.0 服务提供程序机制,这意味着只要它在类路径中可用,它就会自动注册。

注册后,驱动程序将以下语法理解为 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

查询的默认目录(集群)。如果未指定,则查询仅在本地集群中的数据上执行。

[预览] 此功能为技术预览版,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受正式 GA 功能的支持 SLA 的约束。 请参阅 跨集群搜索

错误处理

编辑
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 个条目。