You are here

public function ElasticsearchController::getInfo in Elasticsearch Connector 8

Same name and namespace in other branches
  1. 8.7 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
  2. 8.2 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
  3. 8.5 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()
  4. 8.6 src/Controller/ElasticsearchController.php \Drupal\elasticsearch_connector\Controller\ElasticsearchController::getInfo()

Complete information about the Elasticsearch Client.

Parameters

Cluster $elasticsearch_cluster:

Return value

mixed

Throws

\Exception Exception.

1 string reference to 'ElasticsearchController::getInfo'
elasticsearch_connector.routing.yml in ./elasticsearch_connector.routing.yml
elasticsearch_connector.routing.yml

File

src/Controller/ElasticsearchController.php, line 68
Contains \Drupal\elasticsearch_connector\Controller\ElasticsearchController.

Class

ElasticsearchController
Provides route responses for elasticsearch clusters.

Namespace

Drupal\elasticsearch_connector\Controller

Code

public function getInfo(Cluster $elasticsearch_cluster) {

  // TODO: Get the statistics differently.
  if ($elasticsearch_cluster
    ->checkClusterStatus()) {

    // Nodes.
    $es_client = $elasticsearch_cluster
      ->getClientInstance($elasticsearch_cluster);
    $es_node_namespace = $es_client
      ->getNodesProperties();
    $node_stats = $es_node_namespace['stats'];
    $total_docs = 0;
    $total_size = 0;
    $node_rows = array();
    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 = array();
        $row[] = array(
          'data' => $node_properties['name'],
        );
        $row[] = array(
          'data' => $node_properties['indices']['docs']['count'],
        );
        $row[] = array(
          '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 = $elasticsearch_cluster
      ->getClusterInfo();
    $cluster_statistics_rows = array(
      array(
        array(
          'data' => $cluster_status['health']['number_of_nodes'] . ' ' . t('Nodes'),
        ),
        array(
          'data' => $cluster_status['health']['active_shards'] + $cluster_status['health']['unassigned_shards'] . ' ' . t('Total Shards'),
        ),
        array(
          'data' => $cluster_status['health']['active_shards'] . ' ' . t('Successful Shards'),
        ),
        array(
          'data' => count($cluster_status['state']['metadata']['indices']) . ' ' . t('Indices'),
        ),
        array(
          'data' => $total_docs . ' ' . t('Total Documents'),
        ),
        array(
          'data' => format_size($total_size) . ' ' . t('Total Size'),
        ),
      ),
    );
    $cluster_health_rows = array();
    $cluster_health_mapping = array(
      '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 = array();
      $row[] = array(
        'data' => $cluster_health_mapping[$health_key],
      );
      $row[] = array(
        'data' => $health_value === FALSE ? 'False' : $health_value,
      );
      $cluster_health_rows[] = $row;
    }
  }
  $output['cluster_statistics_wrapper'] = array(
    '#type' => 'fieldset',
    '#title' => t('Cluster statistics'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#attributes' => array(),
  );
  $output['cluster_statistics_wrapper']['nodes'] = array(
    '#theme' => 'table',
    '#header' => array(
      array(
        'data' => t('Node name'),
      ),
      array(
        'data' => t('Documents'),
      ),
      array(
        'data' => t('Size'),
      ),
    ),
    '#rows' => $node_rows,
    '#attributes' => array(),
  );
  $output['cluster_statistics_wrapper']['cluster_statistics'] = array(
    '#theme' => 'table',
    '#header' => array(
      array(
        'data' => t('Total'),
        'colspan' => 6,
      ),
    ),
    '#rows' => $cluster_statistics_rows,
    '#attributes' => array(
      'class' => array(
        'admin-elasticsearch-statistics',
      ),
    ),
  );
  $output['cluster_health'] = array(
    '#theme' => 'table',
    '#header' => array(
      array(
        'data' => t('Cluster Health'),
        'colspan' => 2,
      ),
    ),
    '#rows' => $cluster_health_rows,
    '#attributes' => array(
      'class' => array(
        'admin-elasticsearch-health',
      ),
    ),
  );
  return $output;
}