You are here

public function SearchApiElasticsearchService::indexItems in Search API Elasticsearch 7.2

@inheritdoc

Overrides SearchApiServiceInterface::indexItems

File

includes/SearchApiElasticsearchService.inc, line 20
Provides Elasticsearch service for Search API.

Class

SearchApiElasticsearchService
@file Provides Elasticsearch service for Search API.

Code

public function indexItems(SearchApiIndex $index, array $items) {
  $elasticsearch_index = new SearchApiElasticsearchIndex($index, $this);
  $documents = [];
  foreach ($items as $id => $fields) {
    $data = array(
      'id' => $id,
    );
    foreach ($fields as $field_id => $field_data) {
      if (isset($field_data['value']) && is_array($field_data['value'])) {
        $data[$field_id] = array();
        foreach ($field_data['value'] as $token) {
          $value = is_array($token) && isset($token['value']) ? $token['value'] : $token;
          if ($field_data['type'] === 'date') {
            $value = date(SEARCH_API_ELASTICSEARCH_DATE_FORMAT, $value);
          }
          $data[$field_id][] = $value;
        }
      }
      else {
        $value = $field_data['value'];
        if ($field_data['type'] === 'date') {
          $value = date(SEARCH_API_ELASTICSEARCH_DATE_FORMAT, $value);
        }
        $data[$field_id][] = $value;
      }
    }
    $documents[] = new Document($id, $data, $index->machine_name);
  }
  return $elasticsearch_index
    ->indexItems($documents);
}