Client libraries are meant to be used against the same major version of the server they are using, but how do you deal with upgrades to a new major version?
You can usually load both the old and the new version of the same library, but when defining the elasticsearch nodes, there is no way to tell which ones are on what version.
You may have to keep compatibility with an older version on a production environment, or may be dealing with very large clusters that take a long time to do the upgrade.
So how is this generally done without breaking backwards compatibility?