elasticsearch - Spring Data Elasticsearch 自动重连

标签 elasticsearch spring-data-elasticsearch

我有一个 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/

相关文章:

elasticsearch - Kibana数据表中的条件总和度量(小计列)

elasticsearch - 如何在查询中包装 ElasticSearch 过滤器

elasticsearch - 从Elasticsearch删除文档后未释放磁盘空间

elasticsearch - 搜索带有变音符号的字符串似乎不适用于Spring JPA ES

elasticsearch - 如何从ES查询中了解ES索引?

java - 如何使用 spring data Reactive Elasticsearch 进行源过滤?

elasticsearch - ElasticsearchTemplate-为什么对某些操作隐式使用indexName而对其他操作则隐式使用

spring - 什么是与Spring Data Elasticsearch 3.1.4一起使用的正确Elasticsearch版本

Spring boot + elasticsearch 前缀添加不起作用

elasticsearch - 替换已弃用的NEST代码