项目集成ElasticSearch实现全文检索,项目启动可正常进行创建索引、检索等操作,长时间无操作后再次请求ES服务报错远程主机强迫关闭了一个现有的连接。如果尝试再次链接则一切正常。调整ElasticSearchConfig配置,可问题解决。
修改前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| /** * @author : bunny * @description : */ @Slf4j @Configuration public class ElasticsearchConfig { @Value("${kysjkbunny.elasticsearch.hostname}") private String host; @Value("${kysjkbunny.elasticsearch.port}") private Integer port; @Value("${kysjkbunny.elasticsearch.scheme}") private String scheme;
@Bean public RestHighLevelClient restHighLevelClient() { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost(host, port, scheme))); return client;
return client; } }
|
修改后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| /** * @author : bunny * @description : */ @Slf4j @Configuration public class ElasticsearchConfig { @Value("${kysjkbunny.elasticsearch.hostname}") private String host; @Value("${kysjkbunny.elasticsearch.port}") private Integer port; @Value("${kysjkbunny.elasticsearch.scheme}") private String scheme;
@Bean public RestHighLevelClient restHighLevelClient() { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost(host,port,scheme) ).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { @Override public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) { return requestConfigBuilder.setConnectTimeout(90000000)//25hours .setSocketTimeout(90000000); } }).setHttpClientConfigCallback((httpAsyncClientBuilder -> { httpAsyncClientBuilder.disableAuthCaching(); httpAsyncClientBuilder.setKeepAliveStrategy((httpResponse,httpContext) -> TimeUnit.MINUTES.toMillis(3)); httpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build()); return httpAsyncClientBuilder; })) );
return client; } }
|