This is the documentation for the official Java API Client for Elasticsearch. The client provides strongly typed requests and responses for all Elasticsearch APIs.


  • Strongly typed requests and responses for all Elasticsearch APIs.
  • Blocking and asynchronous versions of all APIs.
  • Use of fluent builders and functional patterns to allow writing concise yet readable code when creating complex nested structures.
  • Seamless integration of application classes by using an object mapper such as Jackson or any JSON-B implementation.
  • Delegates protocol handling to an http client such as the Java Low Level REST Client that takes care of all transport-level concerns: HTTP connection pooling, retries, node discovery, and so on.

Main changes since version 7.15edit

Version 7.15 of the Java API Client was a beta release. We learned a lot from the initial feedback and this led to a few breaking changes in this version:

  • the _core package that contains top-level Elasticsearch APIs has been renamed to core.
  • property setters for lists and maps have been revisited.
  • all API data types are now supported, and there are no more raw JsonValue properties.
  • the supporting JSON framework and transport classes have been refactored and improved. However the high level APIs used by applications haven’t changed so there should be no or very little impact on existing application code.

This version of the Java API Client supports all Elasticsearch APIs are implemented except the Vector tile search API and the Find structure API.

While this version is considered stable, most of the code is generated from the Elasticsearch API specification where some of the less often used Elasticsearch APIs still need to be fully validated. Changes in the specification that may impact application code will be clearly identified in later versions of the Java API client.


The main branch targets the next major release (8.0), the 7.x branch targets the next minor release for the 7.x series.

The Elasticsearch Java client is forward compatible; meaning that the client supports communicating with greater or equal minor versions of Elasticsearch. Elasticsearch language clients are only backwards compatible with default distributions and without guarantees made.