elasticsearch 使用elasticsearch中的父索引字段复制/更新子索引,elasticsearch,groovy,migration,elasticsearch-2.4,elasticsearch,Groovy,Migration,Elasticsearch 2.4" /> elasticsearch 使用elasticsearch中的父索引字段复制/更新子索引,elasticsearch,groovy,migration,elasticsearch-2.4,elasticsearch,Groovy,Migration,Elasticsearch 2.4" />

elasticsearch 使用elasticsearch中的父索引字段复制/更新子索引

elasticsearch 使用elasticsearch中的父索引字段复制/更新子索引,elasticsearch,groovy,migration,elasticsearch-2.4,elasticsearch,Groovy,Migration,Elasticsearch 2.4,在弹性2.4中,我有一个带有父子关系的索引 此索引有两种类型,一种是父索引,另一种是子索引。除了公共字段field1,这两个字段都有不同的映射 索引映射如下所示: 键入父项: { "properties": { "field1": { "type": "long" }, "field2": { "type": "long" } } } 键入子项: { "properties": { "field3": {

在弹性2.4中,我有一个带有父子关系的索引

此索引有两种类型,一种是父索引,另一种是子索引。除了公共字段
field1
,这两个字段都有不同的映射

索引映射如下所示:

键入父项:

{
  "properties": {
    "field1": {
      "type": "long"
    },
    "field2": {
      "type": "long"
    }
  }
}
键入子项

{
  "properties": {
    "field3": {
      "type": "long"
    },
    "field1": {
      "type": "long"
    }
  }
}
现在我已经更新了子索引映射,并添加了另一个与父索引相同的字段,即field2

现在,子对象的映射如下所示:

{
  "properties": {
    "field3": {
      "type": "long"
    },
    "field1": {
      "type": "long"
    }
    "field2": {
      "type": "long"
    }
  }
}
现在,我想在公共字段
field1
的基础上将值从父字段复制到子字段。 子索引中的文档应更新为
field2
,该字段具有公共
field1

我尝试了
\u reindex
api和update\u by\u查询,但没有找到任何好的快速解决方案。正如我尝试的
\u reindex
api,其源和目标如下所示,但有一个限制,即它将创建新文档,而不是通过公共领域(即
field1
)更新文档

我尝试了下面的解决方案

index_name/_reindex
{
  "source": {
    "index": "index_name",
    "type": "parent"
  },
  "dest": {
    "index": "index_name",
    "type": "child"
  },
  "script": {
    "inline": "ctx._dest.field2 = ctx._source.field2"
  }
}

这给了我一个错误,我们不能使用与源和目标相同的索引。我怎样才能解决同样的问题?或者有更好的方法来做同样的事情。

你能把所有这些放在一个新索引中,然后抛弃旧索引吗?我明白你的观点,但问题是我必须在子索引中的旧字段中再添加一个字段@DoctorLove我不认为我能提供适当的帮助,但我也有类似的事情要做,当我为我添加的每个记录手工制作一个id时,它在插入过程中起到了帮助作用,因为我可以找到我想要的并添加新字段。