在使用elasticsearch的时候,有时候会需要修改索引的mapping,特别是在开发阶段修改就更频繁了,但在elasticsearch 里面mapping一但建立就不能修改,这时候需要用到reindex api

先新建索引,然后通过reindex api将旧的索引指向新索引,elasticsearch就会将旧索引的数据根据新索引重新索引,速度比重新跑索引快得多。

POST _reindex
{
  "source": {
    "index": "old index"
  },
  "dest": {
    "index": "new index"
  }
}

ps:该api运行通常都需要很长的时间

值得注意的是,若是多次请求这个api,哪怕是你中断了请求,elastic search服务器那边也会继续运行的,这时候需要_tasks api来查询和中止正在运行的任务