You are here

private function elasticsearch_connector_views_keyword_handler_filter::getFulltextFields in Elasticsearch Connector 7.2

Same name and namespace in other branches
  1. 7.5 modules/elasticsearch_connector_views/handlers/elasticsearch_connector_views_keyword_handler_filter.inc \elasticsearch_connector_views_keyword_handler_filter::getFulltextFields()
  2. 7 modules/elasticsearch_connector_views/handlers/elasticsearch_connector_views_keyword_handler_filter.inc \elasticsearch_connector_views_keyword_handler_filter::getFulltextFields()

Choose fulltext fields from ElasticSearch mapping if they are type string and are analyzed (there is no index => not_analyzed in the mapping)

Return value

array fields

1 call to elasticsearch_connector_views_keyword_handler_filter::getFulltextFields()
elasticsearch_connector_views_keyword_handler_filter::options_form in modules/elasticsearch_connector_views/handlers/elasticsearch_connector_views_keyword_handler_filter.inc
Provide the basic form which calls through to subforms.

File

modules/elasticsearch_connector_views/handlers/elasticsearch_connector_views_keyword_handler_filter.inc, line 76
Fulltext keyword search.

Class

elasticsearch_connector_views_keyword_handler_filter
@file Fulltext keyword search.

Code

private function getFulltextFields() {
  $base_table_parts = explode("__", $this->table);
  $cluster_id = $base_table_parts[1];
  $index = $base_table_parts[2];
  $type = $base_table_parts[3];
  $client = elasticsearch_connector_get_client_by_id($cluster_id);
  $params = array(
    'index' => $index,
    'type' => $type,
  );
  $mapping = $client
    ->indices()
    ->getMapping($params);
  $fulltext_fields = array_keys(array_filter($mapping[$index]['mappings'][$type]['properties'], function ($v) {
    return $v['type'] == 'string' && (!isset($v['index']) || $v['index'] != 'not_analyzed');
  }));
  return array_combine($fulltext_fields, $fulltext_fields);
}