You are here

function elasticsearch_connector_search_api_update_7001 in Elasticsearch Connector 7.5

Same name and namespace in other branches
  1. 7 modules/elasticsearch_connector_search_api/elasticsearch_connector_search_api.install \elasticsearch_connector_search_api_update_7001()
  2. 7.2 modules/elasticsearch_connector_search_api/elasticsearch_connector_search_api.install \elasticsearch_connector_search_api_update_7001()

Update Search API servers and indexes that use ElasticSearch.

File

modules/elasticsearch_connector_search_api/elasticsearch_connector_search_api.install, line 37
Install/unstall tasks for the Elasticsearch Connector Search API module.

Code

function elasticsearch_connector_search_api_update_7001() {
  if (!function_exists('search_api_server_load_multiple')) {
    return t('No Search API servers to update.');
  }
  $servers = search_api_server_load_multiple(FALSE);
  $indexes = search_api_index_load_multiple(FALSE);
  foreach ($indexes as $index) {

    // If the index uses a server with our service class, then the server
    // configuration needs to be updated.
    if ($index->server && $servers[$index->server]->class == 'search_api_elasticsearch_connector') {

      // Duplicate the old method of setting the ElasticSearch index name:
      // concatenate the database name and the index machine name with a set
      // prefix.
      global $databases;
      $site_database = $databases['default']['default']['database'];
      $cluster_index_name = preg_replace('/[^A-Za-z0-9_]+/', '', 'elasticsearch_index_' . $site_database . '_' . $index->machine_name);

      // If the server's cluster index name isn't set yet, update it.
      if (empty($index->options['index_name'])) {
        $server->options['cluster_index_name'] = $cluster_index_name;
        $index->options['index_name'] = $cluster_index_name;
        $index
          ->save();
      }
    }
  }
  return t('Updated Search API servers and indexes that use ElasticSearch. You may need to re-export Search API configuration features.');
}