Ошибка в массовом запросе: индекс: ... вызвано не удалось разобрать - PullRequest
1 голос
/ 02 мая 2019

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

In Bulk.php line 411:

  Error in one or more bulk request actions:        

  index: /journal/journal/2 caused failed to parse  
  index: /journal/journal/3 caused failed to parse  
  index: /journal/journal/4 caused failed to parse

Мой файл конфигурации:

fos_elastica:
    serializer: ~
    clients:
        default: { host: localhost, port: 9200 }
    indexes:
        journal:
            types:
                journal:
                    serializer:
                        groups: [elastica]
                    persistence:
                        driver: orm
                        model: TAMAS\AstroBundle\Entity\Journal

Моя сущность "Журнал":

use Symfony\Component\Serializer\Annotation\Groups;

/**
 * Journal
 *
 * @ORM\Table(name="journal")
 * @ORM\Entity(repositoryClass="TAMAS\AstroBundle\Repository\JournalRepository")
 * @UniqueEntity(fields="journalTitle", message="This title is already recorded in the database.")

 */
class Journal {

    /**
     * @Groups({"elastica"})
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="journal_title", type="string", length=500)
     * @Assert\NotBlank()
     */
    private $journalTitle;

    /**
     * @Groups({"elastica"})
     * Get id
     *
     * @return int
     */
    public function getId() {
        return $this->id;
    }

    /**
     * @Groups({"elastica"})
     * Set id
     *
     * @param int $id
     *
     * @return Journal
     */
    public function setId($id) {
        $this->id = $id;
        return $this;
    }

    /**
     * Set journalTitle
     *
     * @param string $journalTitle
     *
     * @return Journal
     */
    public function setJournalTitle($journalTitle) {
        $this->journalTitle = $journalTitle;

        return $this;
    }

    /**
     * Get journalTitle
     *
     * @return string
     */
    public function getJournalTitle() {
        return $this->journalTitle;
    }
}

Если я не введу в конфигурациюfile:

                    serializer:
                        groups: [elastica]

Для такой организации, как эта, все в порядке, сопоставление выполнено, иasticsearch успешно заполняет индекс.Но для сущностей с круговыми ссылками, например, мне нужен сериализатор и группы.Не могли бы вы понять, в чем может быть проблема?

Для справки, я кодирую / редактирую файлы с помощью Eclipse / Sublime Text и выполняю свои тесты с помощью команд и запросов curl.

EDITЯ установил JMS / serializer-bundle, и он работает нормально.Я думаю, что есть реальная проблема между пакетом FOSElastica и сериализатором Symfony.Это похоже на обходной путь, поэтому, если у кого-то есть понимание проблемы между ними, все равно будет интересно

...