- 出现的错误
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;
@Configuration
public class RestClientConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
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);
}
}