ES 请求远程主机强迫关闭了一个现有的连接问题

本文介绍了如何在ES7.12.1版本中配置ElasticsearchClient,重点解决了`[es/indices.exists]`请求中Missing`X-Elastic-Product`header的问题,包括设置连接超时、TCPkeep-alive策略以及自定义请求头。
摘要由CSDN通过智能技术生成

ES 版本:7.12.1

附带解决[es/indices.exists] Missing [X-Elastic-Product] header

@Configuration
public class ESConfig {
    
    @Value("${es.url}")
    String esUrl;
    
    @Value("${es.port}")
    int esPort;
    
    private RestClient restClient;
    private ElasticsearchClient client;
    
    private ElasticsearchTransport transport;
    
    @Bean(name = "elasticsearchClient")
    public ElasticsearchClient getElasticsearchClient() {
        restClient = RestClient.builder(
                new HttpHost(esUrl, esPort)
        ).setRequestConfigCallback(
                requestConfigBuilder -> requestConfigBuilder
                        .setConnectTimeout(90000000)//25hours
                        .setSocketTimeout(90000000)
        ).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
                //显式设置keepAliveStrategy
                .setKeepAliveStrategy((httpResponse, httpContext) -> TimeUnit.MINUTES.toMillis(3))
                //显式开启tcp keepalive
                .setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build())
                .setDefaultHeaders(
                        Collections.singletonList(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()))
                )
                //解决[es/indices.exists] Missing [X-Elastic-Product] header.
                .addInterceptorLast((HttpResponseInterceptor) (response, context)
                        -> response.addHeader("X-Elastic-Product", "Elasticsearch"))).build();
        // 使用Jackson映射器创建传输层
        transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper()
        );
        // 创建API客户端
        client = new ElasticsearchClient(transport);
        return client;
    }
    
    
    public void close() {
        if (client != null) {
            try {
                transport.close();
                restClient.close();
            } catch (IOException e) {
                log.error("关闭es连接异常");
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糟糕捏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值