elasticsearch 2.0 parent child grandchild

时间:2015-11-12 11:08:00

标签: elasticsearch parent elasticsearch-2.0

My operation:

parent: country, child: branch, grandchild: employee

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

I want add a grandchild employee2, parent is branch:

PUT /company/employee2/_mapping { "employee2": { "_parent": { "type": "branch" } } }

I get wrong message:

{ "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 }

I don't know how can i do. Have any suggestion? Thanks.

2 个答案:

答案 0 :(得分:9)

这是elasticsearch 2.0中的限制。 这在http://localhost中提到。然而,背后的原因在文件中并不清楚。

下面是关于elasticsearch的弹性搜索开发者martijnvg讨论线程的问题:

  

新的子类型不能指向现有类型作为父类型。

     

这与新父母/子女的事实有关   实现父类型和子类型在连接字段中存储ID。   如果type在创建之后成为父级,则为parent   文档可能已编入索引,但未在联接中存储其ID   领域。因此存在这种限制。

     

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

你可以在这里阅读: breaking changes in 2.0

答案 1 :(得分:0)

好 我发现了问题-您无法使用现有类型创建父子关系 删除索引后,一切都很好