FOSElasticaBundle: настройка анализатора для пользовательских свойств

Я использую FOSElasticaBundle в Symfony 3.3. Я зарегистрировал прослушиватель событий в событии POST_TRANSFORM, которое вычисляет и добавляет настраиваемое свойство, например:

public function addCustomProperty(TransformEvent $event)
{
    $document = $event->getDocument();
    $custom = $this->anotherService->calculateCustom($event->getObject());

    $document->set('custom', $custom);
}

Теперь мне нужно установить анализатор, который будет использоваться для этого свойства. Как я могу это сделать?

Я уже пытался добавить имя настраиваемого поля в определение типа в моей конфигурации fos_elastica, но это вызывает исключение, так как пакет затем ожидает это свойство и для моей сущности.

1 ответ

Решение

Я наконец узнал, что я мог бы использовать dynamic_templates установить желаемый анализатор следующим образом:

fos_elastica:
  indexes:
    app:
      types:
        myentity:
          dynamic_templates:
            custom_field:
              path_match: customfield.*
              mapping:
                analyzer: myanalyzer
          properties:
            ...
Другие вопросы по тегам