一尘不染

elasticsearch 2.0亲子孙子

elasticsearch

我的操作:

父母:国家/地区,孩子:分支机构,孙子:员工

PUT / company {“ mappings”:{“ branch”:{“ _parent”:{“ type”:“ country”}}},“
employee”:{“ _parent”:{“ type”:“ branch”}}}}}

我想添加一个孙子雇员2,父母是分支:

PUT / company / employee2 / _mapping {“ employee2”:{“ _parent”:{“ type”:“
branch”}}}

我收到错误消息:

{“ error”:{“ root_cause”:[{“ type”:“ illegal_argument_exception”,“
reason”:“无法添加指向已存在类型的_parent字段”“}],” type“:” illegal_argument_exception“
,“原因”:“无法添加指向现有类型的_parent字段”},“状态”:400}

我不知道该怎么办。有什么建议吗?谢谢。


阅读 252

收藏
2020-06-22

共1个答案

一尘不染

这是Elasticsearch
2.0中施加的限制。在2.0的重大更改中提到了这一点。但是,这背后的原因在文档中尚不清楚。

以下是Elasticsearch开发人员在elasticsearch上发布的martijnvg讨论线程:

新的子类型不能将现有类型指定为父类型。

这与以下事实有关:对于新的父/子实现,父和子类型都将id存储在连接字段中。如果类型在创建后成为父项,则可能已索引未在连接字段中存储其ID的父级文档。因此,存在此限制。

这仅适用于升级到ES 2.0之后创建的新索引。出于迁移目的,此限制不适用于升级到ES 2.0之前创建的索引。实际上是在ES
1.x上创建的,并且在使用旧的父/子实现之前。

您可以在这里阅读有关内容:https : //discuss.elastic.co/t/adding-child-types-
in-2-0/33267

2020-06-22