我正在将FOSElasticaBundle与orm持久性驱动程序以及JMSSerializerBundle序列化程序一起使用。
我的用户由FOSUserBundle管理,我试图为它们建立索引,但排除某些字段,例如密码。
JMSSerializerBundle排除策略(例如@ExclusionPolicy(“all”)@Expose @Exclude)在添加到我的User实体(扩展FOS \ UserBundle \ Model \ User)时没有任何影响。但是这些策略在我的其他实体上可以正常工作。
如何阻止将“盐”和“密码”等字段添加到Elasticsearch索引中?
最佳答案
解决方法是使用'query_builder_method'
FOSElasticaBundle配置设置来调用创建queryBuilder的方法,该方法使用DQL部分对象语法仅选择要索引的字段。
以下是一些有用的链接:
DQL部分对象语法:
http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#partial-object-syntax
使用自定义学说查询生成器:
https://github.com/FriendsOfSymfony/FOSElasticaBundle#use-a-custom-doctrine-query-builder