跳到主要内容

建立连接

使用 DriverManager.getConnection(...) 建立 JDBC 连接:

将地址替换为实际数据库地址;启用认证时,取消认证配置的注释,并从应用配置中提供自己的凭据,不要将真实密码写入源码。

String url = "jdbc:dbvisitor:elastic://127.0.0.1:9200";
java.util.Properties properties = new java.util.Properties();
properties.setProperty("connectTimeout", "5000");
// 服务端启用认证时配置:
// properties.setProperty("user", "elastic");
// properties.setProperty("password", "YOUR_PASSWORD");
try (java.sql.Connection connection = java.sql.DriverManager.getConnection(url, properties)) {
// 在此通过 JDBC 执行命令;退出代码块时自动关闭连接。
}

默认端口为 9200,索引在命令中指定,不在 JDBC URL 的数据库路径中指定。多主机示例为 jdbc:dbvisitor:elastic://host1:9200;host2:9200。高级客户端配置见连接参数中的 customElastic

配置连接参数

参数可通过 properties.setProperty("参数名", "参数值") 配置,也可放在 URL 的 ?name=value&other=value 部分;已有查询参数时用 & 追加。同名参数以 URL 为准,覆盖 Properties。URL 解析不会执行百分号解码;密码、token 以及包含 & 的值应放在 Properties 中,并避免记录到日志。

参数名称、默认值、单位及限制见连接参数。只使用适配器文档列出的参数,不能将厂商 SDK 的任意选项直接当作 JDBC 参数。

连接建立后的命令执行与结果读取见查询操作数据写入

用户名与密码

Properties 中设置 userpassword,使用 HTTP Basic 认证。认证本身不会启用 HTTPS;需要加密传输时使用下方 TLS 配置。

多节点连接

使用 jdbc:dbvisitor:elastic://host1:9200;host2:9200 提供同一集群的节点。REST 客户端负责向节点发送请求,这不是读写分离配置。

TLS 与证书

默认客户端使用 HTTP。连接 HTTPS 服务时,通过 customElastic 工厂设置 HTTPS 地址、认证和可信 SSL 上下文。下例使用 JVM 信任配置,主机和端口需替换为实际端点。

public class SecureElasticFactory implements net.hasor.dbvisitor.adapter.elastic.CustomElastic {
@Override
public org.elasticsearch.client.RestClient createElasticClient(
String jdbcUrl, java.util.Map<String, String> props) {
org.apache.http.impl.client.BasicCredentialsProvider credentials =
new org.apache.http.impl.client.BasicCredentialsProvider();
credentials.setCredentials(org.apache.http.auth.AuthScope.ANY,
new org.apache.http.auth.UsernamePasswordCredentials(
props.get("user"), props.get("password")));
return org.elasticsearch.client.RestClient.builder(
new org.apache.http.HttpHost("es.example.com", 9243, "https"))
.setHttpClientConfigCallback(builder -> builder
.setSSLContext(org.apache.http.ssl.SSLContexts.createSystemDefault())
.setDefaultCredentialsProvider(credentials))
.build();
}
}

建立 JDBC 连接时注册工厂:

java.util.Properties properties = new java.util.Properties();
properties.setProperty("customElastic", SecureElasticFactory.class.getName());
properties.setProperty("user", "YOUR_USER");
properties.setProperty("password", "YOUR_PASSWORD");
try (java.sql.Connection connection = java.sql.DriverManager.getConnection(
"jdbc:dbvisitor:elastic://es.example.com:9243", properties)) {
// 在此通过 JDBC 执行命令。
}

使用私有 CA 时,在 JVM 信任库或工厂的 SSL 上下文中配置信任证书;双向 TLS 还需配置客户端证书与私钥。保留证书和主机名校验,不要使用跳过校验的方式连接。本驱动没有内置的 JDBC PEM 证书参数。

自定义客户端

customElastic 指定实现 net.hasor.dbvisitor.adapter.elastic.CustomElastic 的工厂类,方法为 createElasticClient(String jdbcUrl, Map<String, String> props)。工厂返回客户端由 JDBC 连接使用和关闭。高级客户端配置由工厂自行设置,不能套用 Milvus 的 TLS 参数。

工厂类须位于应用类路径中,并提供可访问的无参构造方法。工厂自行处理地址、认证、TLS 和超时;JDBC 参数会传给工厂,但不会自动应用到工厂创建的客户端。每次调用应返回独立客户端,避免多个 JDBC 连接共享同一客户端后相互关闭。