尝试在 elasticsearch 中重命名嵌套对象名称时出错

Error when trying to rename a nested object name in elasticsearch

我正在尝试重命名这种形状的数据:

使用这个:

POST r_xair_signals-2020-06/_update/2020-06-15T22:23:00Z_-1344027716
{
  "doc" : {
        "Customer ImpactedNested" : "CustomerImpactedNested"
    }
}

但我得到:

"type": "mapper_parsing_exception",
    "reason": "object mapping for [Customer ImpactedNested] tried to parse field [Customer ImpactedNested] as object, but found a concrete value"

我已确认 Customer ImpactedNested 的类型是嵌套的。我在网上看到有关人们收到此错误的信息,但在尝试重命名时却没有看到,也没有看到任何解决方案。我看到一篇文章指出,当新名称与现有名称冲突时会发生这种情况。因此,尝试重命名为 CustomerImpactedNested11111 作为测试(确保是唯一的),但结果相同。

任何想法都会很棒!

实际上有两个问题。

  1. 您的查询没有重命名字段。
  2. 重命名嵌套字段

问题的以下行中实际发生了什么:

POST r_xair_signals-2020-06/_update/2020-06-15T22:23:00Z_-1344027716
{
  "doc" : {
        "Customer ImpactedNested" : "CustomerImpactedNested"
    }
}

它将 column=Customer ImpactedNested 列值 更新为 ID 为 2020-06-15T22:23:00Z_-1344027716.

CustomerImpactedNested 文档

并且 Customer ImpactedNested 是一个嵌套对象,您正试图将 string 值设置为嵌套对象字段。因此你得到了错误。 Refer this

对于您原来的问题,您需要通过 reindex 来完成。 Refer this, this also

POST _reindex
{
  "source": {
    "index": "r_xair_signals-2020-06"
  },
  "dest": {
    "index": "<some_new_index_name>"
  },
  "script": {
    "inline": """ctx._source['CustomerImpactedNested'] = ctx._source.remove("Customer ImpactedNested")"""
  }
}

请尝试上面的查询,如果有错误请告诉我,因为我没有尝试上面的查询。