TransportClient Error while upgrading from Elasticsearch 1.7.3 to 2.0.0

Hi,

I'm trying to upgrade Elasticsearch cluster from 1.7.3 to 2.0.0. I was able to upgrade the nodes in the cluster with a rolling restart. The head plugin runs successfully, index was read properly by the cluster and I can verify that the documents are migrated too.

I'm now trying to connect to the cluster with the existing Java client code version 1.7.3. During this I'm receiving the same errors as mentioned here -

I do believe that these errors can easily be taken care of if I upgrade my client to 2.0.0 or if I downgrade my server to 1.7.3. Neither of those are a good option for us

  1. We do want to get the performance boosters from the ES 2.0 at server side, so cannot revert back to 1.7.3.
  2. We can't take a downtime while doing the upgrade and so we would go with a rolling restart of the nodes in the cluster. That means that the server will be in the mixed version state for a while and hence the client needs to be compatible with both the version for sometime.

From what I know, java client version 1.7.3 is incompatible with ES 2.0 and client version2.0 is incompatible with ES 1.7.3. I need to find a middle ground for the client code.

I'm happy to try any other option that can upgrade the cluster to version 2.0 without any downtime.
Appreciate any help on this.

You can't do rolling upgrades from 1.x to 2.x.
You must upgrade the client as well.

Thanks for replying. We can't take a downtime with the service, are there any other options that you know of which the ElasticSearch community might have adopted to overcome the service downtime problem?

The only way I can see is to build a completely new cluster / application, have a Proxy on top of your application and when the migration is done, switch the proxy to the new cluster, then replay all operations that have been done on old cluster on the new, then kill the old cluster / app.

BTW did you run the migration plugin on your existing cluster?

Yes, I did run the migration plugin. Found some incompatible dot fields in existing index and also warning for the bool fields.
I believe the provided "de dot plugin" works only with logstash and not with the core ES. That leaves me to reindex to get rid of dot fields?

Yes. So you will probably have a downtime or you will need to create a new cluster as I mentioned before.