springboot集成elasticsearch集群出现java.net.SocketTimeoutException: 60 milliseconds ti

650 阅读1分钟
  • 出现的错误 Caused by: java.net.SocketTimeoutException: 60 milliseconds timeout on connection http-outgoing-3 [ACTIVE]
  • 项目版本 springboot:2.3.12.RELEASE Es:7.8.0
  • 解决方案

import org.apache.http.HttpHost;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.Duration;
import java.util.Arrays;

/**
 * @Description: ES配置类
 * 
 */
@Configuration
public class RestClientConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient() {
		//Es集群的连接地址
        HttpHost node1 = new HttpHost("192.168.32.71",9200,"http");
        HttpHost node2 = new HttpHost("192.168.32.71",9201,"http");
        HttpHost node3 = new HttpHost("192.168.32.71",9202,"http");

        RestClientBuilder rclientBuilder = RestClient.builder(node1,node2,node3)
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder
                                .setKeepAliveStrategy((response, context) -> Duration.ofMinutes(5).toMillis());
                    }
                });
       return  new RestHighLevelClient(rclientBuilder);
    }
}