12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- [[java-admin-cluster-health]]
- ==== Cluster Health
- [[java-admin-cluster-health-health]]
- ===== Health
- 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:
- [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) { <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 status
- You 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 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:
- [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`
|