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.14.2</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.14.2 驱动程序不兼容。

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

8.0.0–8.14.2

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

Elasticsearch 8.14.2 与 8.14.2 及更早版本的 8.x 驱动程序兼容。Elasticsearch 8.14.2 还与 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 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编辑

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