Я бы посоветовал вам подумать в своих случаях использования, а затем решить, какие связанные объекты вы собираетесь использовать в целях поиска. Решив, вы можете сделать две вещи:
Вариант A, используйте вложенное поле. Проще, но если вы обновите дочернюю (связанную) сущность, индекс Elasticsearch не будет обновлен. Йо должен убедиться, что это происходит в вашем коде. Например, каждый раз, когда дочерняя сущность обновляется, вы устанавливаете отметку времени в родительском entotity, поэтому FosElasticaBundle перехватывает эту последовательность и запускает сериализатор сущности, чтобы дочерняя сущность становилась сериализованной.
Вариант B, использовать дочернее родительское отношение в Elasticsearch. В этом случае FosElasticaBundle будет правильно отслеживать изменения вашей сущности для каждой сущности Doctrine, поэтому вам не нужно управлять этим в своем коде.
В обоих случаях отношения «многие ко многим» становятся отношениями «один ко многим». В варианте A это делается сериализаторами, которые встраивают дочерний документ в родительский. Во втором случае это переводится на отношения родитель-потомок.