elasticsearch: can't select channel size is 0 for types: [RECOVERY, BULK, STATE]

elasticsearch跨集群搜索的bug

遇到这个问题时在网上只搜到了一个elasticsearch的GitHub关于这个问题的讨论,讨论链接

这个问题出现的原因是在集群中配置了跨集群的功能(es跨集群文档),可以通过GET _cluster/settings查看集群的配置。其中的search.remote.xxxx就是远程集群的配置信息。

产生这个错误的原因是TransportService跟本地集群正常建立的链接后,在搜索(插入新数据也会有同样问题)时会连接远程集群,但是这个TransportService是跟本地连接的,所以拿一个本地集群的连接去连远程集群就出现这个错误。

在哪个GitHub讨论连接中提出的解决方案是“we could also skip adding the managed connection until we fetch the cluster state and only add it there if we really need to”(知道获取到集群的状态才添加管理连接,并且只有在确实需要的时候才添加)

这个问题在6.1.1的版本中是在org.elasticsearch.transport.RemoteClusterConnection类里的491行做的握手连接创建,代码比较复杂没有太深的研究。

我遇到这个问题到写这篇博客还没有彻底解决,因为对集群的配置我没办法修改,我只有使用集群的权限。但是也找到一些可能会解决问题的办法,写在这里跟有同样问题的一起讨论。

在es的集群配置中有一个search.remote.${cluster_alias}.skip_unavailable配置,这个是跳过不可用的远程集群,这个应该是可以解决这个问题的,但是实验几次都出现错误。

问题还在解决中,做一个记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值