:mainid: java-rest-high

[id="{mainid}"]
= Java High Level REST Client

[partintro]
--

The Java High Level REST Client works on top of the Java Low Level REST client.
Its main goal is to expose API specific methods, that accept request objects as
an argument and return response objects, so that request marshalling and
response un-marshalling is handled by the client itself.

Each API can be called synchronously or asynchronously. The synchronous
methods return a response object, while the asynchronous methods, whose names
end with the `async` suffix, require a listener argument that is notified
(on the thread pool managed by the low level client) once a response or an
error is received.

The Java High Level REST Client depends on the Elasticsearch core project.
It accepts the same request arguments as the `TransportClient` and returns
the same response objects.

--

:doc-tests: {elasticsearch-root}/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation
:hlrc-tests: {elasticsearch-root}/client/rest-high-level/src/test/java/org/elasticsearch/client

include::getting-started.asciidoc[]
include::supported-apis.asciidoc[]
include::java-builders.asciidoc[]
include::migration.asciidoc[]
include::../license.asciidoc[]

:doc-tests!:
:mainid!:
