elastic数据迁移或者修改mapping

elastic 在我们建立好mapping之后就是不能修改的了。

那么如果当前mapping不能满足我们的需求,比如以前是long,后面发现text更好,那怎么办?

比如以前的index=cc 感觉不好听想改为 index=zbf怎么办?

这里就涉及到一个知识点 reindex 重建索引

例如我现在有个index i_dw_cc_test

get i_dw_cc_test/_mapping

properties" : {
        "des" : { "type" : "text" },
        "id" : { "type" : "keyword"},
        "name" : {"type" : "text" }
      }

如何修改mapping呢?

1.创建一个备份index 

put i_dw_cc_test_bak

2.迁移原始数据到备份数据index 

POST _reindex?refresh=true
{
  "source": {
    "index": "i_dw_cc_test"
  },
  "dest": {
    "index": "i_dw_cc_test_bak"
  }
}

get i_dw_cc_test_bak/_count  查询数据是否ok

get i_dw_cc_test_bak/_mapping  查询备份数据的mapping啥样

 3.数据已经备份了,将原始数据删掉

delete i_dw_cc_test

4.重新创建 i_dw_cc_test索引 设置好自己想要的mapping 比如我这里都想要text

put  i_dw_cc_test
{
  "mappings":{
    "properties":{
      "id":{"type":"text"},
      "name":{"type":"text"},
      "des":{"type":"text"}
    }
  }
}

5.继续重复第二部 数据迁移工作,把bak数据迁移到原表

POST _reindex?refresh=true
{
  "source": {
    "index": "i_dw_cc_test_bak"
  },
  "dest": {
    "index": "i_dw_cc_test"
  }

get i_dw_cc_test/_count  查询数据是否ok

get i_dw_cc_test/_mapping  查询备份数据的mapping啥样

注意这里 不能说我以前字段是des 现在想改为desc。 reindex的时候不管你的字段名。只看source的字段在不在dest里,在就按照你的mapping设置字段类型,不在就只能自己默认keyword了。

总结下这个修改mapping的流程。

1.建立bak索引 

2.复制原始数据到bak索引里

3.删除原先索引,重建索引为自己需要的mapping

4.复制bak索引的数据到原始索引。

猜你喜欢

转载自blog.csdn.net/cclovezbf/article/details/132711454