| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | [[java-admin-cluster-health]]==== Cluster Health[[java-admin-cluster-health-health]]===== HealthThe cluster health API allows to get a very simple status on the health of the cluster and also can give yousome technical information about the cluster status per index:[source,java]--------------------------------------------------ClusterHealthResponse healths = client.admin().cluster().prepareHealth().get(); <1>String clusterName = healths.getClusterName();              <2>int numberOfDataNodes = healths.getNumberOfDataNodes();     <3>int numberOfNodes = healths.getNumberOfNodes();             <4>for (ClusterIndexHealth health : healths.getIndices().values()) { <5>    String index = health.getIndex();                       <6>    int numberOfShards = health.getNumberOfShards();        <7>    int numberOfReplicas = health.getNumberOfReplicas();    <8>    ClusterHealthStatus status = health.getStatus();        <9>}--------------------------------------------------<1> Get information for all indices<2> Access the cluster name<3> Get the total number of data nodes<4> Get the total number of nodes<5> Iterate over all indices<6> Index name<7> Number of shards<8> Number of replicas<9> Index status[[java-admin-cluster-health-wait-status]]===== Wait for statusYou can use the cluster health API to wait for a specific status for the whole cluster or for a given index:[source,java]--------------------------------------------------client.admin().cluster().prepareHealth()            <1>        .setWaitForYellowStatus()                   <2>        .get();client.admin().cluster().prepareHealth("company")   <3>        .setWaitForGreenStatus()                    <4>        .get();client.admin().cluster().prepareHealth("employee")  <5>        .setWaitForGreenStatus()                    <6>        .setTimeout(TimeValue.timeValueSeconds(2))  <7>        .get();--------------------------------------------------<1> Prepare a health request<2> Wait for the cluster being yellow<3> Prepare the health request for index `company`<4> Wait for the index being green<5> Prepare the health request for index `employee`<6> Wait for the index being green<7> Wait at most for 2 secondsIf the index does not have the expected status and you want to fail in that case, you needto explicitly interpret the result:[source,java]--------------------------------------------------ClusterHealthResponse response = client.admin().cluster().prepareHealth("company")        .setWaitForGreenStatus()    <1>        .get();ClusterHealthStatus status = response.getIndices().get("company").getStatus();if (!status.equals(ClusterHealthStatus.GREEN)) {    throw new RuntimeException("Index is in " + status + " state"); <2>}--------------------------------------------------<1> Wait for the index being green<2> Throw an exception if not `GREEN`
 |