一、创建mapping
mapping必须和旧服务器的一样
PUT /index(索引名称)
{
"settings": {
"index": {
"refresh_interval": -1,
"number_of_shards": "5",
"max_result_window": "1000000",
"number_of_replicas": "0"
}
},
"mappings": {
"properties": {
//映射关系
}
}
}
二、修改elasticsearch.yml文件添加白名单
reindex.remote.whitelist: ["旧服务器地址:9200"]
三、使用_reindex进行迁移
新的服务器索引不要和旧的一样,后期可以使用别名挂载
POST _reindex?scroll=5m&wait_for_completion=false
{
"source": {
"remote": {
"host": "http://旧的服务器地址:9200",
"username": "旧的服务器es账号",
"password": "旧的服务器es密码"
},
"index": "旧的服务器es索引",
"size": 10000
},
"dest": {
"index": "新服务器es索引"
}
}
执行后会返回如下信息记得保存
例如:
Y-9ycl-lQiquOVt7pR709w:359
四、查看迁移情况
使用上面执行的结果查询迁移情况
GET _tasks/返回的ID编号
也可以查询如下命令查询
GET /_cat/indices?v
docsc.count 和旧服务器条数一样就是成功了
五、问题总结
- 传输时候查询不到数据可以执行如下命令试试
POST /索引名称/_doc?pretty=true
- 数据量大,建议安装elastic时候给jvm的内存尽可能的增大
- 如果遇到查询的数量过大,而超过设置的如下设置
GET _cluster/settings
{"persistent": {"search.max_buckets": 50000}}