By mparker17 on
Change record status:
Published (View all published change records)
Project:
Introduced in branch:
8.0.x
Introduced in version:
8.0.0-alpha7
Issue links:
Description:
There is now a \Drupal\elasticsearch_connector\Event\AlterSearchQueryFiltersEvent to modify the filter (often, facet) parameters generated by QueryParamBuilder before the rest of the search query is built.
There is no similar event in Elasticsearch Connector's 8.x-7.x release series.
For example...
namespace Drupal\YOUR_MODULE\EventSubscriber;
use Drupal\elasticsearch_connector\Event\AlterSearchQueryFiltersEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class YourSearchQueryFilterSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
return [
AlterSearchQueryFiltersEvent::class => 'onSearchQueryFilter',
];
}
public function onSearchQueryFilter(AlterSearchQueryFiltersEvent $event): void {
// Get the parameters we want to modify from the event.
$params = $event->getParams();
// Example: Substitute one facet for another on a particular index.
if ($event->getIndexName() === 'YOUR_INDEX'
&& isset($params['post_filters']['term']['YOUR_FIELD'])
&& $params['post_filters']['term']['YOUR_FIELD'] === 'One Facet Term'
&& isset($params['facets_post_filters']['YOUR_FIELD']['terms']['YOUR_FIELD'][0])
&& $params['facets_post_filters']['YOUR_FIELD']['terms']['YOUR_FIELD'][0] === 'One Facet Term'
) {
$params['post_filters']['term']['YOUR_FIELD'] = 'A Different Facet Term';
$params['facets_post_filters']['YOUR_FIELD']['terms']['YOUR_FIELD'][0] = 'A Different Facet Term';
}
// Re-set the parameters in the event to our modified version.
$event->setParams($params);
}
}
Impacts:
Module developers