我为两个父/子相关文档创建了两个Spring-Data elasticsearch存储库。您可以看到它们here的文档类。
借助于像
这样的存储库元素,存储库将以XML格式实例化<elasticsearch:repositories base-package="com.acme.repositories" />
您可以在this github repo中找到问题的完整示例。我的源代码基于spring-data-elasticsearch repo中的测试。源代码只包含两个域类(父类,子类),相关存储库,xml配置文件和unit test class。
克隆并运行mvn test
,抛出java.lang.IllegalArgumentException: can't add a _parent field that points to an already existing type, that isn't already a parent
似乎这个父/子关系产生了一个弹性搜索异常,这在Elasticsearch side中是明确的,但我不知道在执行Spring Data测试时如何防止这种情况发生。
答案 0 :(得分:0)
如果您仍在寻找答案,我通过在父项的@Document中设置createIndex = false来解决这个问题。 并在bean中手动创建
elasticSearchTemplate.createIndex(Parent.class);
elasticSearchTemplate.putMapping(parent.class);
elasticSearchTemplate.createIndex(Child1.class);
elasticSearchTemplate.createIndex(Child2.class);
这应首先创建父项,然后创建关联的子项。 在更新映射之前,请先清除文档。