Spring Data Elasticsearch自动重新连接

时间:2018-11-21 13:41:39

标签: elasticsearch spring-data-elasticsearch

我有一个Spring Boot应用程序,其中使用ElasticsearchTemplate连接到我的ElasticSearch。但是,当它起作用并且我关闭Elasticsearch时,每次使用ElasticTemplate方法时,都会得到一个org.elasticsearch.client.transport.NoNodeAvailableException。很好,因为ElasticSearch无法正常工作。

但是,当ElasticSearch重新工作时,我仍然会收到org.elasticsearch.client.transport.NoNodeAvailableException,好像这不是在尝试重新连接,但是一旦失去连接,我就需要重新启动整个应用程序。

该如何解决?有没有办法让它在ES崩溃后尝试重新连接到ealsticSearch?

1 个答案:

答案 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