77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
|
[[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`
|