Currently, I have a product that has a client for Elastic 2, using the Transport API.
Now, I want to develop another client for the Elastic server v 5.6 and on, and I would like to use the REST High Level Client, but I am not sure if this client (made with the 6.x jars) is going to support servers from both versions (5 and 6).
So, which is the best way to implement this scenario?
a) keep the current elastic 2.3.2 client because of backwards compatibility, and
b) add support to elastic 5 and elastic 6 (if possible, with one implementation)
I know you have the Low-Level REST Client, which would support all versions, but I would like to use the High Level one for the new implementation and keep the already-existing client for 2.3.2.
Another problem is with its dependencies, but I think I can solve it with the Shade plugin, shading all classes from this High Level Client (to let the current support for v2.3.2 as it is), to make a "uber-jar" with all its dependencies.