You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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实例,确保两者共用同一套安全配置。

关键说明

  1. Spring Boot Data Elasticsearch 3.x完全基于Elasticsearch官方推荐的RestClient(Low Level Rest Client的封装),不再依赖废弃的High Level Rest Client,无需参考旧教程的配置方式。
  2. ElasticsearchRepository与ElasticsearchOperations底层共用同一个客户端实例,只要配置正确,两者都会自动应用安全认证与证书设置。

内容的提问来源于stack exchange,提问作者SpaceSloth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:50:16