I want to do a full name lookup in ElasticSearch when I have a first name and last name in MySQL.
I have looked at cross_fields
and copy-to
, but neither support the flexibility of being able to search part or all of the name in a MatchPhrasePrefixQuery
as far as I can tell.
So what I want to do instead is add a field to ElasticSearch that is $firstName . ' ' . $lastName
I have mapped my user entity fields to ElasticSearch using the @ES
decorator.
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
* @ES\Property(type="keyword")
* @Serializer\Groups({"default"})
* @Serializer\SerializedName("firstName")
*/
private $firstname;
But how do I add a virtual fullName
column to ElasticSearch so that I can search that field instead of the 2 separate fields?
Is there a way to add it using the decorators so that it is automatically handled with the other fields and data migrations etc., without having to make a separate import script for it and doing it manually?