SQL JDBC
编辑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 |
|
Elasticsearch 8.14.2 与 8.14.2 及更早版本的 8.x 驱动程序兼容。Elasticsearch 8.14.2 还与 7.7.0 及更高版本的 7.x 驱动程序兼容。 |
7.7.1-7.17 |
|
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
个条目。