php - ONGR ElasticsearchBundle将虚拟字段映射到ElasticSearch

标签 php symfony elasticsearch doctrine-orm ongr

当我在MySQL中有名字和姓氏时,我想在ElasticSearch中进行全名查找。

我看过cross_fieldscopy-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;
}

关于php - ONGR ElasticsearchBundle将虚拟字段映射到ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48060719/

相关文章:

java - 通过php检索sql数据库中的一行并将输出转换为android应用程序中的textView

php - mysql选择坐标错误

java - 是否可以强制 Php 中的 Web 应用程序与 Java 中的桌面应用程序一起使用?

php - 脚本 php artisan 优化处理返回错误代码 1 的 post-update-cmd 事件

database - 使用 ElasticSearch 作为事实来源

java - 使用 postgresql 进行 elastisticsearch 全文搜索

php - 将多个查询参数传递给 restful api 的最佳方法是什么?

javascript - 是否使用全局 npm

symfony - mp3 文件转换为 mpga

elasticsearch - Logstash管道不存在