Определение сопоставления ElasticSearch для конкретного объекта с помощью FOSElastica

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

Я пытался определить параметры «свойства», но с определенным параметром «сериализатора» он просто игнорирует его.

Я бы хотел сделать что-то подобное, но свойства 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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
408
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Если вам нужен пример моей конфигурации в 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

Другие вопросы по теме