A presentation at Workshop in in Munich, Germany by Alexander Reelsen
Elasticsearch comes with a bunch of clients for different languages, like JavaScript, Ruby, Go, .NET, PHP, Perl, Python and most recently even Rust.
A late starter (starting in 5.x, but only fully supported from 7.0) was the Java High Level REST client, that intended to replace the TransportClient.
This presentation talks a little bit about the reasoning while showing a lot of examples how to use the client, and even comes with a small sample project - which you can check out at https://github.com/spinscale/elasticsearch-rest-client-samples