The _cross cluster search_ feature allows any node to act as a federated client across
multiple clusters. In contrast to the _tribe_ feature, a _cross cluster search_ node won't
join the remote cluster, instead it connects to a remote cluster in a light fashion in order to executed
federated search requests.
The _cross cluster search_ feature works by configuring a remote cluster in the cluster state and connects only to a
limited number of nodes in the remote cluster. Each remote cluster is referenced by a name and a list of seed nodes.
Those seed nodes are used to discover other nodes eligible as so-called _gateway nodes_. Each node in a cluster that
has remote cluster configured connects to one or more _gateway nodes_ and uses them to federate search requests to
the remote cluster.
Remote clusters can either be configured as part of the `elasticsearch.yml` file or be dynamically updated via
the <<cluster settings API, cluster-update-settings>>. If a remote cluster is configured via `elasticsearch.yml` only
the nodes with the configuration set will be connecting to the remote cluster. Remote clusters set via the
<<cluster settings API, cluster-update-settings>> will be available on every node in the cluster.
The `elasticsearch.yml` config file for a _cross cluster search_ node just needs to list the
remote clusters that should be connected to, for instance:
[source,yaml]
--------------------------------
search:
remote:
seeds:
cluster_one: 127.0.0.1:9300 <1>
cluster_two: 127.0.0.1:9301 <1>
--------------------------------
<1> `cluster_one` and `cluster_two` are arbitrary names representing the connection to each cluster. These names are subsequently used to distinguish between local and remote indices.
[float]
=== Using cross cluster search
To search the `twitter` index on remote cluster `cluster_1` the index name must be prefixed with the cluster name