在es中对于某个创建好的索引,尤其是里面的field的类型在初次设置完毕并添加了数据之后,再想重新修改字段类型是比较麻烦的一件事,而且现实问题是,es的某个索引存储的数据量非常大,非特殊情况下是没有必要更换索引的,但在一些特定的场景下,比如误操作导致索引类型创建有误,text类型的被创建成long了,或者是为了完成索引到数据的迁移但又不能影响线上的应用,就需要对index进行迁移;
在es中,迁移的思路大致如下,
1、为原来的索引【这里假如叫做 old_index】 加一个别名,比如叫alias_index;
2、手动创建一个新的索引 new_index;
3、使用es的scroll的API将旧索引中的数据循环的查出来;
4、采用bulk api将scoll查出来的一批数据,批量写入新索引;
5、使用POST发送请求,移除别名的alias_index,然后将数据指向新的索引
下面我们实际模拟一下这个场景,假如我们一开始创建了一个索引,并加了两条数据,