FOSElasticaBundle:为自定义属性设置分析器

时间:2017-06-13 12:15:49

标签: symfony elasticsearch elastica foselasticabundle

我在Symfony 3.3中使用FOSElasticaBundle。我在POST_TRANSFORM事件上注册了一个事件监听器来计算和adds a custom property这样:

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

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

现在我需要将分析器设置为用于此属性。我怎么能这样做?

我已经尝试将自定义字段名称添加到我的fos_elastica配置中的类型定义中,但这会导致异常,因为bundle会在我的实体上预期该属性。

1 个答案:

答案 0 :(得分:0)

我终于发现我可以使用dynamic_templates来设置所需的分析器:

fos_elastica:
  indexes:
    app:
      types:
        myentity:
          dynamic_templates:
            custom_field:
              path_match: customfield.*
              mapping:
                analyzer: myanalyzer
          properties:
            ...