我在Elasticsearch的索引中有两个字段 field1 field2

我需要将 field1 重命名为 field2
我也想将 field2 重命名为 field1

这是我当前的映射的外观,并且为此索引建立了许多文档的索引

{
  "mappings": {
    "properties": {
      "field1": {
        "type": "text"
      },
      "field2" : {
        "type" : "completion"
      }
    }
  }
}

我需要以下映射
{
  "mappings": {
    "properties": {
      "field1": {
        "type": "completion"
      },
      "field2" : {
        "type" : "text"
      }
    }
  }
}

我可以重命名字段并重新建立索引吗?

我正在使用Elasticsearch 7.4版

最佳答案

是的,您可以使用update-by-query API来实现,如下所示:

POST index/_update_by_query
{
  "script": {
    "source": "def tmp1 = ctx._source.field2; ctx._source.field2 = ctx._source.field1; ctx._source.field1 = tmp1;",
    "lang": "painless"
  }
}

关于elasticsearch - 在Elasticsearch中交换字段名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59173179/

10-11 09:02