Why had Elastic released a complete new API with 8.0?

Why had Elastic released a complete new API with 8.0?
High Level API Client was working well. Why replacing it with Elasticsearch Java API Client?

Thanks - Enomine

Mainly because the old client was using internal classes from the Elasticsearch server and was coupled with it. As a consequence:

  • the "client jar" was as fat as the server
  • it was depending on Lucene which was sometimes leading to jar conflicts
  • you must have the same version between the server and the client
  • was harder to maintain as there was no real contract for the APIs

The new one is coming with so many benefits. To name a few:

  • you can use your business objects directly instead of doing the serialization manually and you can directly get your business objects from the responses.
  • compatibility with reactive patterns
  • fluent API
  • less risks of breaking the client when a refactoring is happening on the server side

Thanks for that information.

Here i have an additional question...

-> Elasticsearch Version 7 had a "Java REST Client", which included a "Java Low Level REST Client" as well as a "Java High Level REST Client".

-> Elasticsearch Version 8 has a "Elasticsearch Java API Client", which includes a "Java Low Level REST Client". Elasticsearch Java API Client seem to be the counterpart of the Java High Level REST Client.


Is the Java Low Level REST Client in ESJAC technicaly the same (is it a copy of the same code) as the Java Low Level REST Client from Java REST Client? Or was it rewritten, too?

Thanks - Enomine

The Low Level Client is the same for both High Level clients.

1 Like

Thanks - Enomine

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.