Cluster Administrationedit
To access cluster Java API, you need to call cluster()
method from an AdminClient
:
ClusterAdminClient clusterAdminClient = client.admin().cluster();

In the rest of this guide, we will use client.admin().cluster()
.
Cluster Healthedit
Healthedit
The cluster health API allows to get a very simple status on the health of the cluster and also can give you some technical information about the cluster status per index:
ClusterHealthResponse healths = client.admin().cluster().prepareHealth().get();String clusterName = healths.getClusterName();
int numberOfDataNodes = healths.getNumberOfDataNodes();
int numberOfNodes = healths.getNumberOfNodes();
for (ClusterIndexHealth health : healths) {
String index = health.getIndex();
int numberOfShards = health.getNumberOfShards();
int numberOfReplicas = health.getNumberOfReplicas();
ClusterHealthStatus status = health.getStatus();
}
Wait for statusedit
You can use the cluster health API to wait for a specific status for the whole cluster or for a given index:
client.admin().cluster().prepareHealth().setWaitForYellowStatus()
.get(); client.admin().cluster().prepareHealth("company")
.setWaitForGreenStatus()
.get(); client.admin().cluster().prepareHealth("employee")
.setWaitForGreenStatus()
.setTimeout(TimeValue.timeValueSeconds(2))
.get();
Prepare a health request | |
Wait for the cluster being yellow | |
Prepare the health request for index | |
Wait for the index being green | |
Prepare the health request for index | |
Wait for the index being green | |
Wait at most for 2 seconds |
If the index does not have the expected status and you want to fail in that case, you need to explicitly interpret the result:
ClusterHealthResponse response = client.admin().cluster().prepareHealth("company") .setWaitForGreenStatus().get(); ClusterHealthStatus status = response.getIndices().get("company").getStatus(); if (!status.equals(ClusterHealthStatus.GREEN)) { throw new RuntimeException("Index is in " + status + " state");
}