# ElasticsearchRestTemplate After not using it for a period of time: Java.io.ioException: The remote host forced closure of an existing connection

**URL:** <https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172>\
**Category:** Elasticsearch\
**Tags:** docker\
**Created:** [April 25, 2021, 8:06am UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172 "2021-04-25T08:06:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![canye666](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/canye666/32/87689_2.png) [@canye666](https://discuss.elastic.co/u/canye666)\
**Post date:** [April 25, 2021, 8:06am UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/1 "2021-04-25T08:06:09Z")

</div>

````auto
    远程主机强迫关闭了一个现有的连接。; nested exception is java.lang.RuntimeException: 远程主机强迫关闭了一个现有的连接。 org.springframework.dao.DataAccessResourceFailureException: 远程主机强迫关闭了一个现有的连接。
    	at org.springframework.data.elasticsearch.core.ElasticsearchExceptionTranslator.translateExceptionIfPossible(ElasticsearchExceptionTranslator.java:76)
    	at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:378)
    	at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:361)
    	at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.index(ElasticsearchRestTemplate.java:146)
    	at org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate.save(AbstractElasticsearchTemplate.java:144)
    	at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.save(AbstractElasticsearchRepository.java:191)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.springframework.data.repository.core.support.ImplementationInvocationMetadata.invoke(ImplementationInvocationMetadata.java:72)
    	at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:382)
    	at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:205)
    	at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:550)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:155)
    	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:130)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    	at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    	at com.sun.proxy.$Proxy201.save(Unknown Source)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    	at com.sun.proxy.$Proxy201.save(Unknown Source)
    	at org.jeecg.modules.note.controller.NoteIndexController.addNote(NoteIndexController.java:97)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
    	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
    	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
    	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
    	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
    	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
    	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
    	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:92)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at com.github.xiaoymin.knife4j.spring.filter.ProductionSecurityFilter.doFilter(ProductionSecurityFilter.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at com.github.xiaoymin.knife4j.spring.filter.SecurityBasicAuthFilter.doFilter(SecurityBasicAuthFilter.java:90)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.RuntimeException: 远程主机强迫关闭了一个现有的连接。
at data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:376)
    	```
````

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [April 28, 2021, 1:40am UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/2 "2021-04-28T01:40:52Z")

</div>

Are you asking for assistance here or just posting a log?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 28, 2021, 7:31am UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/3 "2021-04-28T07:31:04Z")

</div>

And nothing in this log is related to elasticsearch Java code. So it's hard to know what is the problem and how it has been produced.

---

<div class="post-metadata">

**Author:** ![canye666](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/canye666/32/87689_2.png) [@canye666](https://discuss.elastic.co/u/canye666)\
**Post date:** [April 28, 2021, 12:16pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/4 "2021-04-28T12:16:03Z")

</div>

this is error code used , thank you . now, every once I to new ElasticsearchRestTemplate() use is ok , but this is a bad idea or function

```auto
        List<NoteType> result = null;
        String preTag = "<font remark='ai-note 高亮搜索结果之一' style='background-color: yellow'>";//google的色值
        String postTag = "</font>";
        String keywords = noteType.getMdContent();
        // 是否是包含型搜索
        boolean isWildQuery = false;
        NativeSearchQuery searchQuery = null;
        try {
            if (StringUtils.isNotBlank(keywords)) {
                keywords = keywords.trim();
            }
            // 自动创建索引库, 实体类必须要有 @Field(type字段
// elasticsearchTemplate.putMapping(NoteType.class);
            // 组合查询专用对象 termQuery不会分词 matchQuery会分词
            BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
            if (StringUtils.isNotBlank(keywords) ) {
                if (keywords.length() > 2) {
                    isWildQuery = false;
                    boolQueryBuilder.should( matchQuery("mdContent", keywords));
                    boolQueryBuilder.should( matchQuery("title", keywords));
                }else {
                    isWildQuery = true;
                    boolQueryBuilder.should( wildcardQuery("mdContent", "*"+ keywords +"*" ));
                    boolQueryBuilder.should( wildcardQuery("title", "*"+ keywords +"*" ));
                }
            }
            // 条件: 默认不传查询非删除状态的全部
            if (StringUtils.isNotBlank(noteType.getStatus()) ) {
                boolQueryBuilder.filter(QueryBuilders.matchQuery("status", noteType.getStatus()));
            }else {
                boolQueryBuilder.mustNot(QueryBuilders.termQuery("status", "-1"));
            }
            // 条件: 查询分类下的
            if (StringUtils.isNotBlank(noteType.getCategory())) {
                boolQueryBuilder.filter(QueryBuilders.matchQuery("category", noteType.getCategory()));
            }

            HighlightBuilder.Field descField = new HighlightBuilder.Field("mdContent").requireFieldMatch(true).preTags(preTag).postTags(postTag)
                    // 最大高亮分片数
                    .fragmentSize(80);
            HighlightBuilder.Field nameField = new HighlightBuilder.Field("title").requireFieldMatch(false).preTags(preTag).postTags(postTag)
                    // 最大高亮分片数
                    .fragmentSize(80);

            if (noteType.getId() != null) {
                descField.preTags(preTag).postTags(postTag);
                // 1. 详情的时候开启这个,并且设置返回全部内容
                boolQueryBuilder.filter(QueryBuilders.matchQuery("id", noteType.getId()));
                // 2. 从第一个分片获取高亮片段: 当numOfFragment设置为0时，fragmentSize失效，会返回全部内容。默认为5
                descField.numOfFragments(0);
                //最大高亮分片数
                descField.fragmentSize(800000);
                // 只会高亮匹配的字段 只用设置一个??
    // descField.requireFieldMatch(true);
            }
            searchQuery = new NativeSearchQueryBuilder()
                    .withSort(SortBuilders.fieldSort("updateDate").order(SortOrder.DESC))
                    .withQuery(boolQueryBuilder)
    // .withQuery(multiMatchQuery( noteType.getName(), "title", "mdContent")) // 被boolQueryBuilder替代
                    .withHighlightFields( nameField, descField )
    // .withPageable(PageRequest.of(0, 10))
                    .build();
            String s = searchQuery.getQuery().toString();
            log.info("elasticsearchTemplate send query DSL : {}", s );
            SearchHits<NoteType> search = elasticsearchTemplate.search(searchQuery, NoteType.class);

```

---

<div class="post-metadata">

**Author:** ![canye666](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/canye666/32/87689_2.png) [@canye666](https://discuss.elastic.co/u/canye666)\
**Post date:** [April 28, 2021, 12:18pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/5 "2021-04-28T12:18:20Z")

</div>

i want to @Autowired this Obejct to solution these problem

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 28, 2021, 1:33pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/6 "2021-04-28T13:33:47Z")

</div>

Not sure we can help here. It's more something to ask in the spring project I think.

---

<div class="post-metadata">

**Author:** ![canye666](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/canye666/32/87689_2.png) [@canye666](https://discuss.elastic.co/u/canye666)\
**Post date:** [April 28, 2021, 1:57pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/7 "2021-04-28T13:57:01Z")

</div>

Aha, I'll use this not very good method first

---

<div class="post-metadata">

**Author:** ![canye666](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/canye666/32/87689_2.png) [@canye666](https://discuss.elastic.co/u/canye666)\
**Post date:** [April 28, 2021, 1:57pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/8 "2021-04-28T13:57:23Z")

</div>

thanks

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [May 26, 2021, 1:57pm UTC](https://discuss.elastic.co/t/elasticsearchresttemplate-after-not-using-it-for-a-period-of-time-java-io-ioexception-the-remote-host-forced-closure-of-an-existing-connection/271172/9 "2021-05-26T13:57:51Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
