我有一个 Spring Boot 应用程序,我在其中使用 ElasticsearchTemplate
连接到我的 ElasticSearch。但是,当它工作并且我关闭 Elasticsearch 时,每次我使用 ElasticTemplate
方法时,我都会得到一个 org.elasticsearch.client.transport.NoNodeAvailableException
。没关系,因为 ElasticSearch 不工作。
然而,当 ElasticSearch 恢复正常时,我仍然收到 org.elasticsearch.client.transport.NoNodeAvailableException
就好像这不是在尝试重新连接,但一旦失去连接,我需要重新启动我的整个应用程序。
如何解决?有没有办法让它在 ES 关闭后尝试重新连接到 ealsticSearch?
最佳答案
TransportClient 每 5 秒发送一次心跳信号以验证 节点还活着,如果不活着就丢弃它。
启用嗅探后,客户端将连接到新发现的节点或再次出现的旧节点。
因此,将 TransportClient 设置中的“client.transport.sniff”属性设置为 true 应该会有所帮助。参见 https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.5/transport-client.html
顺便说一句:考虑切换到 rest 客户端,因为使用传输客户端会阻止您升级到 future 的 elasticsearch 版本 (https://www.elastic.co/blog/state-of-the-official-elasticsearch-java-clients)
关于elasticsearch - Spring Data Elasticsearch 自动重连,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413390/