es集群迁移,大规模迁移过程中,比如我们以当天时间做索引,在新的es集群会存在和老的es集群一样的索引文件名,这个时候用snapshot恢复数据会出现冲突问题。这里我们可以用reindex api来解决:

这里有两种方式使用

1.先在原来的es集群将迁移当天的索引文件名reindex,然后做快照,然后用快照恢复重命名的快照,然后重新reindex恢复

2.先在原来的es集群做快照,然后在新es集群做当日索引文件reindex,然后删除新生成的索引文件,然后从snapshot恢复当日索引文件,然后将当日新数据做reindex 恢复。

这里举例第二种方式:

1.查看索引文件

curl 10.0.67.23:/_cat/indices/adsense-.*

2.做reindex

curl -XPOST '10.0.67.23:9200/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"source": {
"index": "adsense-2017.11.22-new"
},
"dest": {
"index": "adsense-2017.11.22"
}
}
'

3.删除当日索引文件

curl -XDELETE '10.0.67.23:9200/adsense-2017.11.22'

4.导入老集群当日索引文件

curl -XPOST "10.0.67.21:9200/_snapshot/es_backup/snapshot-20171123-16/_restore" -d'{ "indices": "adsense-2017.11.22" }'

5.将当日新数据重新合并到老集群索引文件

curl -XPOST '10.0.67.23:9200/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"source": {
"index": "adsense-2017.11.22-new"
},
"dest": {
"index": "adsense-2017.11.22"
}
}
'
05-28 21:20