Elasticsearch - 从 2.x 升级到 7.x - 使用 TransportClient 和 Jest 双写入

Elasticsearch - Upgrading from 2.x to 7.x - Dual write using TransportClient and Jest

我们正在从 elasticsearch 2.x 迁移到 7.x,方法是对两个集群进行双重写入。稍后,在 2.x 到 5.x 然后 5.x 到 6.x 最后 6.x 到 7.x.

现在,问题是启用对新旧集群的双写,我们正在使用 TransportClient(tcp 连接)和 Jest(http 连接)来索引文档,有没有客户端可以处理这个问题?据我所知,Jest 不支持 7.x,我们在这里有什么选择?

编辑

我们正在使用 Kafka 连接将相同的更新发送到 7.x elasticsearch。这个问题仍然对寻找非 kafka 解决方案的人开放。

你是对的 JEST 不支持 7.X 并且 Elasticsearch 官方客户端不适用于 2.X :) 并且直到现在还没有客户端可以写入这两个版本,甚至Elasticsearch客户端随服务器版本一起发布,主版本有变化时不兼容

此外,由于您正在使用 Java,我强烈建议您使用 high-level client, instead of transport the client. As mentioned in official ES blog,很快传输客户端将被弃用,转而支持高级客户端。来自同一博客的文字:

The high-level client will eventually replace the transport client in the future, hence we invite all our Java users to try it out and migrate to it if possible. The current release supports the following Elasticsearch APIs:

解法:

您需要使用 maven shade 插件将存在于 jestElasticsearch 客户端 中的 class 重新定位为他们有冲突的 classes,这样你可以同时使用客户端并使用它们你可以索引和查询他们的 Elasticsearch 服务器。

可以找到有关阴影插件的更多信息here and here