1.异常:
Caused by: java.io.IOException: Connection reset by peer
at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:793)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:218)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:205)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1454)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1424)
2.分析
RestHighLevelClient客户端,使用的是apache httpclient,版本为4.x,keepAlive默认为-1(客户端会一直保持session);
当服务端因为超时或者其他原因关闭session,客户端仍然认为长连接存在,抛出异常;
注:当ES服务端的keepAlive
短于ES客户端的keepAlive
,也会导致:服务端已经关闭了连接,客户端继续复用
该连接,抛出异常。
3.解决
手动设置KeepAliveStrategy来配置keepAlive,保证客户端keepAlive小于服务端keepAlive,让客户端先于服务端关闭连接