我有一个Spring Boot应用程序,其中使用ElasticsearchTemplate
连接到我的ElasticSearch。但是,当它起作用并且我关闭Elasticsearch时,每次使用ElasticTemplate
方法时,都会得到一个org.elasticsearch.client.transport.NoNodeAvailableException
。很好,因为ElasticSearch无法正常工作。
但是,当ElasticSearch重新工作时,我仍然会收到org.elasticsearch.client.transport.NoNodeAvailableException
,好像这不是在尝试重新连接,但是一旦失去连接,我就需要重新启动整个应用程序。
该如何解决?有没有办法让它在ES崩溃后尝试重新连接到ealsticSearch?
答案 0 :(得分:0)
TransportClient每5秒发送一次心跳信号,以验证 节点处于活动状态,如果没有,则将其删除。
启用嗅探后,客户端将连接到新发现的节点或再次出现的旧节点。
因此将TransportClient设置中的“ client.transport.sniff”属性设置为true应该会有所帮助。参见https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.5/transport-client.html
BTW:请考虑切换到其他客户端,因为使用传输客户端会阻止您升级到将来的Elasticsearch版本(https://www.elastic.co/blog/state-of-the-official-elasticsearch-java-clients)