ES版本:

实现思路:对mapping添加字段,但是旧数据是不会有该字段,此时使用_update_by_query对旧数据进行更新即可:

添加字段:

 PUT index/_mapping
{
    "properties":{
       "new_field":{"type":"date","format":"yyyy-MM-dd HH:mm:ss"}
    }
}

修改旧数据:

POST  index/_doc/_update_by_query
{
  "script": {
    "lang": "painless",
    "inline": "if (ctx._source.new_field== null) {ctx._source.new_field= 'xxx'}"
  },
  "query":{
    "bool":{
      "must_not":{
        "exists":{
          "field":"new_field"
        }
      }
    }
  }
}

另一种方案:_reindex API,可以参考下面这篇:

ES数据库重建索引——Reindex(数据迁移) - 落雨无晴 - 博客园

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐