为了加快搜索结果,我使用了elastica_to_model_transformer的自定义查询,该查询以部分实体的形式检索列表页面所需的20个左右的值。
persistence:
elastica_to_model_transformer:
query_builder_method: createSearchQueryBuilder
但是,我发现了一种意想不到的副作用。如果我使用搜索检索某些实体,然后更新这些实体中的值,当对象转换回弹性搜索文档以插入索引时,则只会将20个左右的水合值添加到索引中。
在更新索引之前是否有办法确保对象完全水合,或者在执行某些搜索时是否可以忽略自定义查询?
答案 0 :(得分:0)
问题正在发生,因为createSearchQueryBuilder返回一个部分实体,只有这个部分实体才会在索引中更新/插入。
所以看起来解决方案是使用
$em->refresh($entity);
从数据库重新加载实体。
这可以用;
如果自定义查询返回相关实体的部分结果,则添加
非常重要cascade={"refresh"}
到这些关系的映射。