protected function SearchApiElasticsearchBackend::getFilter in Elasticsearch Connector 8
Get filter by associative array.
1 call to SearchApiElasticsearchBackend::getFilter()
- SearchApiElasticsearchBackend::parseFilter in src/
Plugin/ search_api/ backend/ SearchApiElasticsearchBackend.php - Recursively parse Search API filters.
File
- src/
Plugin/ search_api/ backend/ SearchApiElasticsearchBackend.php, line 694 - Contains the SearchApiElasticsearchBackend object.
Class
- SearchApiElasticsearchBackend
- Plugin annotation @SearchApiBackend( id = "elasticsearch", label = @Translation("Elasticsearch"), description = @Translation("Index items using an Elasticsearch server.") )
Namespace
Drupal\elasticsearch_connector\Plugin\search_api\backendCode
protected function getFilter(array $filter_assoc) {
// Handles "empty", "not empty" operators.
if (!isset($filter_assoc['filter_value'])) {
switch ($filter_assoc['filter_operator']) {
case '<>':
$filter = array(
'exists' => array(
'field' => $filter_assoc['field_id'],
),
);
break;
case '=':
$filter = array(
'not' => array(
'filter' => array(
'exists' => array(
'field' => $filter_assoc['field_id'],
),
),
),
);
break;
default:
throw new \Exception(t('Value is empty for :field_id! Incorrect filter criteria is using for searching!', array(
':field_id' => $filter_assoc['field_id'],
)));
}
}
else {
switch ($filter_assoc['filter_operator']) {
case '=':
$filter = array(
'term' => array(
$filter_assoc['field_id'] => $filter_assoc['filter_value'],
),
);
break;
case '<>':
$filter = array(
'not' => array(
'filter' => array(
'term' => array(
$filter_assoc['field_id'] => $filter_assoc['filter_value'],
),
),
),
);
break;
case '>':
$filter = array(
'range' => array(
$filter_assoc['field_id'] => array(
'from' => $filter_assoc['filter_value'],
'to' => NULL,
'include_lower' => FALSE,
'include_upper' => FALSE,
),
),
);
break;
case '>=':
$filter = array(
'range' => array(
$filter_assoc['field_id'] => array(
'from' => $filter_assoc['filter_value'],
'to' => NULL,
'include_lower' => TRUE,
'include_upper' => FALSE,
),
),
);
break;
case '<':
$filter = array(
'range' => array(
$filter_assoc['field_id'] => array(
'from' => NULL,
'to' => $filter_assoc['filter_value'],
'include_lower' => FALSE,
'include_upper' => FALSE,
),
),
);
break;
case '<=':
$filter = array(
'range' => array(
$filter_assoc['field_id'] => array(
'from' => NULL,
'to' => $filter_assoc['filter_value'],
'include_lower' => FALSE,
'include_upper' => TRUE,
),
),
);
break;
default:
throw new \Exception(t('Undefined operator :field_operator for :field_id field! Incorrect filter criteria is using for searching!', array(
':field_operator' => $filter_assoc['filter_operator'],
':field_id' => $filter_assoc['field_id'],
)));
}
}
return $filter;
}