我正在将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

10-04 22:20