|
@@ -0,0 +1,76 @@
|
|
|
+[[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`
|