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

如何配置OpenSearch RestHighLevelClient的读取超时?

配置OpenSearch RestHighLevelClient读取超时的方法

你可以通过两种方式配置读取超时(对应socket timeout),以下是具体实现:

方案一:请求级别超时配置(推荐)

通过RestClientBuilder的setRequestConfigCallback方法,针对每个请求设置超时参数,包括读取超时:

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));

RestClientBuilder builder = RestClient.builder(new HttpHost(url, port, scheme))
        .setHttpClientConfigCallback(httpClientBuilder -> 
                httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
        // 配置请求超时参数
        .setRequestConfigCallback(requestConfigBuilder -> 
                requestConfigBuilder
                        .setSocketTimeout(60000) // 读取超时,单位毫秒,示例设为60秒
                        .setConnectTimeout(30000) // 连接超时,可选配置
                        .setConnectionRequestTimeout(30000)); // 连接池获取连接超时,可选配置

return new RestHighLevelClient(builder);

方案二:客户端全局默认超时配置

通过HttpClientConfigCallback设置客户端级别的默认超时,所有请求会继承这个配置,若有请求级别的配置则会被覆盖:

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));

RestClientBuilder builder = RestClient.builder(new HttpHost(url, port, scheme))
        .setHttpClientConfigCallback(httpClientBuilder -> 
                httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
                        // 设置默认读取超时
                        .setDefaultSocketConfig(SocketConfig.custom()
                                .setSoTimeout(60000) // 读取超时60秒
                                .build())
                        // 可选:设置默认连接超时
                        .setDefaultConnectionConfig(ConnectionConfig.custom()
                                .setConnectTimeout(30000)
                                .build()));

return new RestHighLevelClient(builder);

关键说明

  • setSocketTimeout(方案一)或setSoTimeout(方案二)就是控制读取超时的参数,即客户端等待服务器返回响应数据的最长时间。
  • 两种方案可以配合使用,请求级别的配置优先级高于客户端全局默认配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:19