To create a native client to communicate with an ElasticSearch server, there are two ways:
Creating an embedded node (a node that doesn't contain data, but it works as arbiter) and getting the client from it. This node will appear in the cluster state nodes and it's able to use discovery capabilities of ElasticSearch to join the cluster (so no node address is required to connect to a cluster). This client is able to reduce the node routing due to knowledge of cluster topology.
Creating a transport client, which is a standard client that requires the address and port of nodes to connect.
In this recipe, we will see how to create these clients.
You need a working ElasticSearch cluster and a working copy of Maven.
The code of this recipe is in chapter_10/nativeclient in the code bundle of this book provided on Packt's website.