java如何连接eshttps
连接 Elasticsearch 的 Java 客户端
Java 可以通过官方提供的 RestHighLevelClient 或新的 Java API Client 连接 Elasticsearch。以下是两种方式的实现方法。
使用 RestHighLevelClient(传统方式)
添加 Maven 依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.0</version>
</dependency>
初始化客户端:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")
)
);
执行搜索请求示例:
SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
关闭客户端:
client.close();
使用新的 Java API Client(推荐)
添加 Maven 依赖:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.12.2</version>
</dependency>
初始化客户端:
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200)
).build();
ElasticsearchTransport transport = new RestClientTransport(
restClient,
new JacksonJsonpMapper()
);
ElasticsearchClient client = new ElasticsearchClient(transport);
执行搜索请求示例:
SearchResponse<Object> response = client.search(s -> s
.index("index_name")
.query(q -> q
.matchAll(m -> m)
),
Object.class
);
关闭客户端:
restClient.close();
处理 SSL 和认证
如果需要连接 HTTPS 或添加认证:
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
AuthScope.ANY,
new UsernamePasswordCredentials("username", "password")
);
RestClient.builder(new HttpHost("hostname", 9200, "https"))
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
.setSSLContext(sslContext)
.setDefaultCredentialsProvider(credentialsProvider)
);
连接池配置
优化客户端连接池:
RestClient.builder(new HttpHost("localhost", 9200))
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
.setMaxConnTotal(100)
.setMaxConnPerRoute(50)
);
异常处理
捕获 Elasticsearch 异常:

try {
// 执行ES操作
} catch (ElasticsearchException e) {
// 处理ES特定异常
} catch (IOException e) {
// 处理IO异常
}
以上方法涵盖了从基础连接到高级配置的 Java 连接 Elasticsearch 的实现方式。根据实际需求选择合适的客户端版本和配置参数。






