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

Java连接OpenSearch Serverless报404请求失败问题排查

问题排查与解决方案

核心问题分析

出现404错误的核心原因集中在端点格式错误和依赖版本冲突/配置错误,结合你提到的Python/Postman可正常连接的场景,优先排查这两点。

1. 修正OpenSearch Serverless端点格式

你的代码中端点带了:443端口号,而AwsSdk2Transport默认会为HTTPS请求使用443端口,重复指定会导致请求URL格式异常,最终引发404错误。

修改后的端点配置:

OpenSearchClient client = new OpenSearchClient(
        new AwsSdk2Transport(
                httpClient,
                "122345.us-east-2.aoss.amazonaws.com", // 移除末尾的:443端口
                "aoss",
                Region.US_EAST_2,
                AwsSdk2TransportOptions.builder().build()
        )
);

2. 修复依赖版本冲突与配置错误

你的依赖存在版本不兼容、语法错误和版本冲突问题:

  • opensearch-java与opensearch-rest-client版本不一致(2.6.0 vs 2.12.0)
  • AWS SDK的opensearch依赖版本与bom指定版本冲突(2.17.64 vs 2.17.290)
  • httpclient依赖末尾多了一个多余的单引号

修正后的依赖配置:

// 统一OpenSearch客户端版本,避免兼容性问题
implementation("org.opensearch.client:opensearch-java:2.12.0")
implementation("org.opensearch.client:opensearch-rest-client:2.12.0")
implementation("org.apache.httpcomponents:httpclient:4.5.13") // 移除末尾多余的单引号

// 通过bom统一管理AWS SDK版本,彻底避免版本冲突
implementation(platform("software.amazon.awssdk:bom:2.17.290"))
implementation("software.amazon.awssdk:opensearch") // 不再单独指定版本,由bom控制
implementation("software.amazon.awssdk:apache-client")
implementation("software.amazon.awssdk:s3")

3. 验证AWS凭证加载

确保Java环境能正确加载AWS访问凭证:

  • 本地开发:检查~/.aws/credentials文件是否存在有效凭证,或设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量
  • 云环境:确保运行实例/容器拥有访问目标OpenSearch Serverless集合的IAM权限

调整后的完整测试代码

import org.opensearch.client.opensearch.OpenSearchClient;
import org.opensearch.client.opensearch._types.InfoResponse;
import org.opensearch.client.transport.aws.sdk2.AwsSdk2Transport;
import org.opensearch.client.transport.aws.sdk2.AwsSdk2TransportOptions;
import software.amazon.awssdk.http.apache.ApacheHttpClient;
import software.amazon.awssdk.regions.Region;

public class OpenSearchServerlessTest {
    public static void main(String[] args) throws Exception {
        ApacheHttpClient httpClient = ApacheHttpClient.builder().build();

        OpenSearchClient client = new OpenSearchClient(
                new AwsSdk2Transport(
                        httpClient,
                        "122345.us-east-2.aoss.amazonaws.com",
                        "aoss",
                        Region.US_EAST_2,
                        AwsSdk2TransportOptions.builder().build()
                )
        );

        InfoResponse info = client.info();
        System.out.println(info.version().distribution() + ": " + info.version().number());

        httpClient.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:45:16