ONGR ElasticsearchBundle 将虚拟字段映射到 ElasticSearch
ONGR ElasticsearchBundle mapping virtual fields to ElasticSearch
当我在 MySQL 中有名字和姓氏时,我想在 ElasticSearch 中进行全名查找。
我看过 cross_fields
和 copy-to
,但据我所知,它们都不支持在 MatchPhrasePrefixQuery
中搜索部分或全部名称的灵活性.
所以我想做的是向 ElasticSearch 添加一个字段,即 $firstName . ' ' . $lastName
我已使用 @ES
装饰器将我的用户实体字段映射到 ElasticSearch。
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
* @ES\Property(type="keyword")
* @Serializer\Groups({"default"})
* @Serializer\SerializedName("firstName")
*/
private $firstname;
但是如何向 ElasticSearch 添加虚拟 fullName
列,以便我可以搜索该字段而不是 2 个单独的字段?
有没有一种方法可以使用装饰器添加它,以便它与其他字段和数据迁移等一起自动处理,而不必为它制作单独的导入脚本并手动执行?
快速拍摄(未测试):
/**
* @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;
}
当我在 MySQL 中有名字和姓氏时,我想在 ElasticSearch 中进行全名查找。
我看过 cross_fields
和 copy-to
,但据我所知,它们都不支持在 MatchPhrasePrefixQuery
中搜索部分或全部名称的灵活性.
所以我想做的是向 ElasticSearch 添加一个字段,即 $firstName . ' ' . $lastName
我已使用 @ES
装饰器将我的用户实体字段映射到 ElasticSearch。
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
* @ES\Property(type="keyword")
* @Serializer\Groups({"default"})
* @Serializer\SerializedName("firstName")
*/
private $firstname;
但是如何向 ElasticSearch 添加虚拟 fullName
列,以便我可以搜索该字段而不是 2 个单独的字段?
有没有一种方法可以使用装饰器添加它,以便它与其他字段和数据迁移等一起自动处理,而不必为它制作单独的导入脚本并手动执行?
快速拍摄(未测试):
/**
* @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;
}