首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在父类型已存在后创建父子关系

在父类型已存在后创建父子关系
EN

Stack Overflow用户
提问于 2016-01-29 02:57:55
回答 3查看 3.5K关注 0票数 1

我正在尝试添加一个新类型作为现有类型的子类型。从ElasticSearch documentation上看,这看起来是可能的,但没有关于如何做到这一点的细节。

以下是文档中所说的:

这必须在创建索引时完成,或者在创建子类型之前使用更新映射API完成。

没有关于在update-mapping API documentation中设置父子关系的详细信息。

直觉上,我认为亲子关系应该在父母已经存在之后才允许建立,因为父母不需要知道关于孩子的任何事情。

当我创建一个新类型作为子类型时,下面是我得到的错误:

代码语言:javascript
复制
{
"error": {
  "root_cause": [
    {
      "type": "illegal_argument_exception",
      "reason": "can't add a _parent field that points to an already existing type"
    }
  ],
  "type": "illegal_argument_exception",
  "reason": "can't add a _parent field that points to an already existing type"
},
"status": 400
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-03 13:31:34

这在ElasticSearch中是不允许的,因此它要求在同一请求或调用中同时创建父对象和子对象。

票数 4
EN

Stack Overflow用户

发布于 2016-01-29 03:15:22

回答我自己的问题。找到了解释这不可能的原因的this post。文档仍然具有误导性,因为它声称这是可能的。

票数 0
EN

Stack Overflow用户

发布于 2019-03-20 04:21:47

对于任何使用Spring Data Elasticsearch 3.0.x (ES 5.x)的用户:当您为父实体(文档)和子实体(文档)拥有单独的存储库,并且父存储库首先被实例化(这反过来又定义父映射)时,可能会发生此错误。

解决方法是确定存储库的创建顺序,例如:

代码语言:javascript
复制
/**
 * Workaround: Child ES type must be defined before the parent. The order matters!
 */
@Configuration
@DependsOn({"childRepository", "parentRepository"})
public class ElasticConfig {
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35069735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档