建立连接
使用 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 中设置 user 和 password,使用 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 连接共享同一客户端后相互关闭。