custom/plugins/SwpaSort/src/Subscriber/Elasticsearch/ElasticsearchIndexConfigEventSubscriber.php line 18

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Swpa\SwpaSort\Subscriber\Elasticsearch;
  3. use Shopware\Elasticsearch\Framework\Indexing\Event\ElasticsearchIndexConfigEvent;
  4. use Shopware\Elasticsearch\Product\ElasticsearchProductDefinition;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. class ElasticsearchIndexConfigEventSubscriber implements EventSubscriberInterface
  7. {
  8.     public static function getSubscribedEvents(): array
  9.     {
  10.         return [
  11.             ElasticsearchIndexConfigEvent::class => 'onIndexConfiguration',
  12.         ];
  13.     }
  14.     public function onIndexConfiguration(ElasticsearchIndexConfigEvent $event): void
  15.     {
  16.         $config $event->getConfig();
  17.         $definition $event->getDefinition();
  18.         if(!$definition instanceof ElasticsearchProductDefinition){
  19.             return;
  20.         }
  21.         $config['mappings']['properties'] = $this->addPositionIndex($config['mappings']['properties']);
  22.         $event->setConfig($config);
  23.     }
  24.     private function addPositionIndex(array $mapping) : array
  25.     {
  26.         $mapping['swpaPosition'] = [
  27.             'type' => 'object',
  28.             'dynamic' => true
  29.         ];
  30.         return $mapping;
  31.     }
  32. }