Zero-downtime upgrade using the Ruby client

I have an that app that uses the Ruby client to connect to an Elasticsearch v7 cluster, and I would like upgrade the cluster to v8 without downtime.

I know that the cluster itself can be upgrade without downtime, but it's not clear to me if the Ruby app can be made to continue working during the upgrade without any issues when talking to Elasticsearch. To avoid downtime, the Ruby client would need to be able to seamlessly transition from v7 to v8. The client's documentation states that:

  • "clients support communicating with greater or equal minor versions of Elasticsearch without breaking", but this doesn't apply here because v7 to v8 would be a major version upgrade, not minor;
  • "Elasticsearch language clients are only backwards compatible with default distributions and without guarantees made" - I take this to mean that if I use the version v8.x.x of the Ruby client, it should be able to connect to an Elasticsearch v7 cluster, but there are no guarantees that it will work correctly.

Is really just grabbing the v8.x.x of the Ruby client and hoping for the best, the only option available? Or is there a more reliable way to do it, that I've missed?

I saw some other tickets and discussions that touch on the topic of backwards compatibility of the Ruby client, but they don't clearly answer the question of how to perform a zero-downtime upgrade reliably.

Added language-clients