public function ElasticsearchController::getInfo in Elasticsearch Connector 8.5
Same name and namespace in other branches
- 8.7 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
- 8 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
- 8.2 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
- 8.6 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
Complete information about the Elasticsearch Client.
Parameters
\Drupal\elasticsearch_connector\Entity\Cluster $elasticsearch_cluster: Elasticsearch cluster.
Return value
array Render array.
File
- src/
Controller/ ElasticsearchController.php, line 92
Class
- ElasticsearchController
- Provides route responses for elasticsearch clusters.
Namespace
Drupal\elasticsearch_connector\ControllerCode
public function getInfo(Cluster $elasticsearch_cluster) {
// TODO: Get the statistics differently.
$client_connector = $this->clientManager
->getClientForCluster($elasticsearch_cluster);
$node_rows = [];
$cluster_statistics_rows = [];
$cluster_health_rows = [];
if ($client_connector
->isClusterOk()) {
// Nodes.
$es_node_namespace = $client_connector
->getNodesProperties();
$node_stats = $es_node_namespace['stats'];
$total_docs = 0;
$total_size = 0;
$node_rows = [];
if (!empty($node_stats['nodes'])) {
// TODO: Better format the results in order to build the
// correct output.
foreach ($node_stats['nodes'] as $node_id => $node_properties) {
$row = [];
$row[] = [
'data' => $node_properties['name'],
];
$row[] = [
'data' => $node_properties['indices']['docs']['count'],
];
$row[] = [
'data' => format_size($node_properties['indices']['store']['size_in_bytes']),
];
$total_docs += $node_properties['indices']['docs']['count'];
$total_size += $node_properties['indices']['store']['size_in_bytes'];
$node_rows[] = $row;
}
}
$cluster_status = $client_connector
->getClusterInfo();
$cluster_statistics_rows = [
[
[
'data' => $cluster_status['health']['number_of_nodes'] . ' ' . t('Nodes'),
],
[
'data' => $cluster_status['health']['active_shards'] + $cluster_status['health']['unassigned_shards'] . ' ' . t('Total Shards'),
],
[
'data' => $cluster_status['health']['active_shards'] . ' ' . t('Successful Shards'),
],
[
'data' => count($cluster_status['state']['metadata']['indices']) . ' ' . t('Indices'),
],
[
'data' => $total_docs . ' ' . t('Total Documents'),
],
[
'data' => format_size($total_size) . ' ' . t('Total Size'),
],
],
];
$cluster_health_rows = [];
$cluster_health_mapping = [
'cluster_name' => t('Cluster name'),
'status' => t('Status'),
'timed_out' => t('Time out'),
'number_of_nodes' => t('Number of nodes'),
'number_of_data_nodes' => t('Number of data nodes'),
'active_primary_shards' => t('Active primary shards'),
'active_shards' => t('Active shards'),
'relocating_shards' => t('Relocating shards'),
'initializing_shards' => t('Initializing shards'),
'unassigned_shards' => t('Unassigned shards'),
'delayed_unassigned_shards' => t('Delayed unassigned shards'),
'number_of_pending_tasks' => t('Number of pending tasks'),
'number_of_in_flight_fetch' => t('Number of in-flight fetch'),
'task_max_waiting_in_queue_millis' => t('Task max waiting in queue millis'),
'active_shards_percent_as_number' => t('Active shards percent as number'),
];
foreach ($cluster_status['health'] as $health_key => $health_value) {
$row = [];
$row[] = [
'data' => $cluster_health_mapping[$health_key],
];
$row[] = [
'data' => $health_value === FALSE ? 'False' : $health_value,
];
$cluster_health_rows[] = $row;
}
}
$output['cluster_statistics_wrapper'] = [
'#type' => 'fieldset',
'#title' => t('Cluster statistics'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#attributes' => [],
];
$output['cluster_statistics_wrapper']['nodes'] = [
'#theme' => 'table',
'#header' => [
[
'data' => t('Node name'),
],
[
'data' => t('Documents'),
],
[
'data' => t('Size'),
],
],
'#rows' => $node_rows,
'#attributes' => [],
];
$output['cluster_statistics_wrapper']['cluster_statistics'] = [
'#theme' => 'table',
'#header' => [
[
'data' => t('Total'),
'colspan' => 6,
],
],
'#rows' => $cluster_statistics_rows,
'#attributes' => [
'class' => [
'admin-elasticsearch-statistics',
],
],
];
$output['cluster_health'] = [
'#theme' => 'table',
'#header' => [
[
'data' => t('Cluster Health'),
'colspan' => 2,
],
],
'#rows' => $cluster_health_rows,
'#attributes' => [
'class' => [
'admin-elasticsearch-health',
],
],
];
return $output;
}