123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- [[client]]
- == Client
- You can use the *Java client* in multiple ways:
- * Perform standard <<java-docs-index,index>>, <<java-docs-get,get>>,
- <<java-docs-delete,delete>> and <<java-search,search>> operations on an
- existing cluster
- * Perform administrative tasks on a running cluster
- Obtaining an elasticsearch `Client` is simple. The most common way to
- get a client is by creating a <<transport-client,`TransportClient`>>
- that connects to a cluster.
- *Important:*
- ______________________________________________________________________________________________________________________________________________________________
- Please note that you are encouraged to use the same version on client
- and cluster sides. You may hit some incompatibility issues when mixing
- major versions.
- ______________________________________________________________________________________________________________________________________________________________
- [[transport-client]]
- === Transport Client
- The `TransportClient` connects remotely to an Elasticsearch cluster
- using the transport module. It does not join the cluster, but simply
- gets one or more initial transport addresses and communicates with them
- in round robin fashion on each action (though most actions will probably
- be "two hop" operations).
- [source,java]
- --------------------------------------------------
- // on startup
- Client client = TransportClient.builder().build()
- .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
- .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));
- // on shutdown
- client.close();
- --------------------------------------------------
- Note that you have to set the cluster name if you use one different than
- "elasticsearch":
- [source,java]
- --------------------------------------------------
- Settings settings = Settings.settingsBuilder()
- .put("cluster.name", "myClusterName").build();
- Client client = TransportClient.builder().settings(settings).build();
- //Add transport addresses and do something with the client...
- --------------------------------------------------
- The client allows sniffing the rest of the cluster, which adds data nodes
- into its list of machines to use. In this case, note that the IP addresses
- used will be the ones that the other nodes were started with (the
- "publish" address). In order to enable it, set the
- `client.transport.sniff` to `true`:
- [source,java]
- --------------------------------------------------
- Settings settings = Settings.settingsBuilder()
- .put("client.transport.sniff", true).build();
- TransportClient client = TransportClient.builder().settings(settings).build();
- --------------------------------------------------
- Other transport client level settings include:
- [cols="<,<",options="header",]
- |=======================================================================
- |Parameter |Description
- |`client.transport.ignore_cluster_name` |Set to `true` to ignore cluster
- name validation of connected nodes. (since 0.19.4)
- |`client.transport.ping_timeout` |The time to wait for a ping response
- from a node. Defaults to `5s`.
- |`client.transport.nodes_sampler_interval` |How often to sample / ping
- the nodes listed and connected. Defaults to `5s`.
- |=======================================================================
- [[client-connected-to-client-node]]
- === Connecting a Client to a Coordinating Only Node
- You can start locally a {ref}/modules-node.html#coordinating-only-node[Coordinating Only Node]
- and then simply create a <<transport-client,`TransportClient`>> in your
- application which connects to this Coordinating Only Node.
- This way, the coordinating only node will be able to load whatever plugin you
- need (think about discovery plugins for example).
|