ONGR ElasticsearchBundle, отображающий виртуальные поля в ElasticSearch

Я хочу сделать поиск полного имени в ElasticSearch, когда у меня есть имя и фамилия в MySQL.

Я смотрел на cross_fields а также copy-to, но не поддерживают гибкость возможности поиска части или всего имени в MatchPhrasePrefixQuery насколько я могу судить.

Вместо этого я хочу добавить в ElasticSearch поле, $firstName . ' ' . $lastName

Я сопоставил свои поля сущности пользователя с ElasticSearch, используя @ES декоратор.

 /**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
* @ES\Property(type="keyword")
* @Serializer\Groups({"default"})
* @Serializer\SerializedName("firstName")
*/
private $firstname;

Но как мне добавить виртуальный fullName столбец ElasticSearch, чтобы я мог искать это поле вместо 2 отдельных полей?

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

1

Решение

Просто быстрый выстрел (не проверено):

 /**
* @var string
*
* @ES\Property(type="keyword")
* @Serializer\Groups({"default"})
* @Serializer\SerializedName("fullName")
*/
private $fullname;

/**
* Get fullname
*
* @return string
*/
public function getFullname()
{
return $this->firstname . ' ' . $this->lastname;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]