Change record status: 
Introduced in branch: 
8.0.x
Introduced in version: 
8.0.0-alpha7
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