ClusterAdminClient clusterAdminClient = client.admin().cluster();
Cluster Health
ClusterHealthResponse healths = client.admin().cluster().prepareHealth().get();
String clusterName = healths.getClusterName();
int numberOfDataNodes = healths.getNumberOfDataNodes();
int numberOfNodes = healths.getNumberOfNodes();
for (ClusterIndexHealth health : healths.getIndices().values()) {
String index = health.getIndex();
int numberOfShards = health.getNumberOfShards();
int numberOfReplicas = health.getNumberOfReplicas();
ClusterHealthStatus status = health.getStatus();
}
Wait for status
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();
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");
}