RequestOptionsedit

All APIs in the RestHighLevelClient accept a RequestOptions which you can use to customize the request in ways that won’t change how Elasticsearch executes the request. For example, this is the place where you’d specify a NodeSelector to control which node receives the request. See the low level client documentation for more examples of customizing the options. === Asynchronous usage

All of the the methods across the different clients exist in a traditional synchronous and asynchronous variant. The difference is that the asynchronous ones use asynchronous requests in the REST Low Level Client. This is useful if you are doing multiple requests or are using e.g. rx java, Kotlin co-routines, or similar frameworks.

The asynchronous methods are recognizable by the fact that they have the word "Async" in their name and return a Cancellable instance. The asynchronous methods accept the same request object as the synchronous variant and accept a generic ActionListener<T> where T is the return type of the synchronous method.

All asynchronous methods return a Cancellable object with a cancel method that you may call in case you want to abort the request. Cancelling no longer needed requests is a good way to avoid putting unnecessary load on Elasticsearch.

Using the Cancellable instance is optional and you can safely ignore this if you have no need for this. A use case for this would be using this with e.g. Kotlin’s suspendCancellableCoRoutine.