SQL JDBC

编辑

Elasticsearch 的 SQL JDBC 驱动程序是一个功能丰富、功能齐全的 Elasticsearch JDBC 驱动程序。它是一个类型 4 驱动程序,这意味着它是一个平台无关的、独立的、直接到数据库的、纯 Java 驱动程序,它将 JDBC 调用转换为 Elasticsearch SQL。

安装

编辑

JDBC 驱动程序可从以下位置获取:

专用页面
elastic.co 提供链接,通常用于手动下载。
Maven 依赖项
Maven 兼容工具可以将其自动作为依赖项检索
<dependency>
  <groupId>org.elasticsearch.plugin</groupId>
  <artifactId>x-pack-sql-jdbc</artifactId>
  <version>8.16.0</version>
</dependency>

Maven 中心存储库 或从 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.16.0 驱动程序不兼容。

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

8.0.0–8.16.0

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

Elasticsearch 8.16.0 与 8.16.0 和更早的 8.x 驱动程序兼容。Elasticsearch 8.16.0 也与 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 驱动程序兼容。

设置

编辑

驱动程序主类是 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

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

[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。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 条目。