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

Spring Boot 2.7.3降级Elasticsearch依赖后启动报错求助

Spring Boot 2.7.3 集成 AWS OpenSearch 7.9.3 构建与启动问题解决方案

问题背景

升级Spring Boot至2.7.3后,模块集成AWS Elasticsearch/OpenSearch 7.9.3时,本地运行正常但QA构建抛出错误:

Invalid or missing build flavor [oss];

经排查,Spring Boot 2.7.x配套的spring-boot-starter-data-elasticsearch使用的Elasticsearch客户端版本(如7.17.x)新增了构建版本校验逻辑,仅允许default作为合法构建版本,而AWS OpenSearch属于oss flavor,触发了该校验。

若直接降级spring-boot-starter-data-elasticsearch至2.5.7,会因与Spring Boot 2.7.3的spring-auto-configure版本不兼容,出现启动时类找不到的报错。

可行解决方案

方案一:自定义RestHighLevelClient Bean,绕过自动配置校验

直接手动创建客户端实例,跳过Spring Boot自动配置的客户端逻辑,避免版本校验:

  1. 编写客户端配置类:
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient() {
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("your-opensearch-host", 443, "https"))
                        // 如需AWS签名认证,添加对应的请求拦截器
                        // .setHttpClientConfigCallback(httpClientBuilder -> {
                        //     httpClientBuilder.addInterceptorLast(new Aws4SignerInterceptor(
                        //             "us-east-1",
                        //             AwsSdkClient.builder().region(Region.of("us-east-1")).build(),
                        //             "es"));
                        //     return httpClientBuilder;
                        // })
        );
    }
}
  1. 排除Spring Boot的Elasticsearch自动配置类:
@SpringBootApplication(exclude = {ElasticsearchRestClientAutoConfiguration.class})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

方案二:调整依赖版本,保持Spring Boot 2.7.x兼容

不降级整个starter,仅替换Elasticsearch客户端版本为与AWS OpenSearch 7.9.3匹配的版本,同时排除starter中自带的高版本客户端:
Maven依赖配置示例:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.7.3</version>
    <exclusions>
        <exclusion>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 添加与AWS OpenSearch 7.9.3匹配的客户端依赖 -->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.9.3</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.9.3</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>7.9.3</version>
</dependency>

此方式既保留Spring Boot 2.7.x的自动配置能力,又避免版本校验冲突。

方案三:使用AWS官方OpenSearch客户端

替换Elasticsearch客户端为AWS官方OpenSearch SDK,天然适配AWS环境,无版本校验问题:

  1. 添加Maven依赖:
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>opensearch</artifactId>
    <version>2.17.200</version> <!-- 选择与Spring Boot 2.7.x兼容的版本 -->
</dependency>
  1. 创建AWS OpenSearch客户端Bean:
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.opensearch.OpenSearchClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AwsOpenSearchConfig {

    @Bean
    public OpenSearchClient openSearchClient() {
        return OpenSearchClient.builder()
                .region(Region.US_EAST_1)
                .build();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:05:27