Определение сопоставления ElasticSearch для конкретной сущности с помощью FOSElastica - PullRequest
0 голосов
/ 13 мая 2019

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

Я попытался определить параметры "properties", но с определенной опцией "serializer" кажется, что он просто игнорируется.

Я бы хотел сделать что-то подобное, но свойства "table_content" просто игнорируются.

fos_elastica:
    serializer: 
        serializer: jms_serializer
    clients:
        default: { host: localhost, port: 9200 }
    indexes:
        table_content: 
            types: 
                table_content: 
                    properties:
                        id: ~
                    persistence: 
                        driver: orm 
                        model: TAMAS\AstroBundle\Entity\TableContent
        astonomical_object:
            types:
                astonomical_object:
                    serializer:
                        groups: [astonomicalobject]
                        serialize_null: true
                    persistence:
                        driver: orm
                        model: TAMAS\AstroBundle\Entity\AstronomicalObject

1 Ответ

0 голосов
/ 01 июля 2019

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

Итак, через некоторое время я нашел решение своих проблем: Динамические шаблоны и Шаблоны индексов

На самом деле у меня возникли проблемы с тем, что ElasticSearch не распознал некоторые типы полей (например, date или geo_point), поэтому я принудительно назначил их для специально названных полей с помощью шаблонов.

Если вы хотитепример моей конфигурации в FOSElastica ( документ здесь ):

fos_elastica:
    serializer: 
        serializer: jms_serializer
    clients:
        default: 
            host: localhost 
            port: 9200
    index_templates: # https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-templates.html
        base_template: # this is a custom name for the index template
            client: default
            template: "*" # this is where you define which indices will use this template
            types:
                _doc: # this is where you define which types will use this (_doc stands for every type/documents)
                    dynamic_templates: # https://www.elastic.co/guide/en/elasticsearch/reference/6.8/dynamic-templates.html
                        dynamic_date_template: # this is a custom name for the dynamic field template
                            match_pattern: regex
                            match: created|updated|tpq_date|taq_date
                            mapping:
                                type: date
                        dynamic_location_template:
                            match: location
                            mapping:
                                type: geo_point
...