如何通过Spring Boot Data Elasticsearch 3.0.1配置Elasticsearch 8.5.3安全认证
解决Spring Boot Data Elasticsearch 3.0.1对接安全版Elasticsearch 8.5.3的配置问题
一、直接通过application.yaml配置证书与安全认证
Spring Boot Data Elasticsearch 3.x(对应ES 8.x)已默认采用Elasticsearch官方的RestClient替代废弃的High Level Rest Client,你可直接通过spring.elasticsearch.ssl前缀配置项设置证书,无需手动创建废弃客户端实例。
修改后的application.yaml配置如下:
spring: elasticsearch: uris: "https://localhost:9700" # 启用安全后ES默认用HTTPS,端口请对应你的实际配置 username: elastic password: 123 ssl: certificate-authorities: classpath:elastic-ca.pem # CA证书放在resources目录下时用classpath前缀 # 测试环境临时忽略证书验证(生产环境禁止使用)可开启以下配置 # verify-hostnames: false # trust-all: true
- 注意:开启安全功能后ES通信协议默认切换为HTTPS,需将
uris改为https://开头。 - 你可从ES容器导出CA证书:执行
docker exec <es容器名> bin/elasticsearch-certutil ca --out /tmp/elastic-ca.pem,再将证书复制到Spring Boot项目的src/main/resources目录下。
完成配置后,ElasticsearchRepository和ElasticsearchOperations会自动复用这个带安全认证的客户端,无需额外修改业务代码。
二、自定义RestClient配置(复杂场景适用)
如果需要自定义连接超时、请求超时等参数,可编写@Configuration类手动注册客户端与操作模板:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; @Configuration @EnableElasticsearchRepositories(basePackages = "com.yourpackage.repository") // 替换为你的Repository包路径 public class ElasticsearchConfig { @Bean public ElasticsearchOperations elasticsearchOperations() { ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo("localhost:9700") .usingSsl("classpath:elastic-ca.pem") // 指定CA证书路径 .withBasicAuth("elastic", "123") // 配置用户名密码 .withConnectTimeout(3000) // 连接超时时间(毫秒) .withSocketTimeout(5000) // 请求超时时间(毫秒) .build(); return new ElasticsearchRestTemplate(RestClients.create(clientConfiguration).rest()); } }
- 该配置会覆盖Spring Boot自动配置,
ElasticsearchRepository会自动复用这个自定义的ElasticsearchOperations实例,确保两者共用同一套安全配置。
关键说明
- Spring Boot Data Elasticsearch 3.x完全基于Elasticsearch官方推荐的
RestClient(Low Level Rest Client的封装),不再依赖废弃的High Level Rest Client,无需参考旧教程的配置方式。 ElasticsearchRepository与ElasticsearchOperations底层共用同一个客户端实例,只要配置正确,两者都会自动应用安全认证与证书设置。
内容的提问来源于stack exchange,提问作者SpaceSloth
相关产品推荐
相关产品推荐

