一、部署ES6分布式集群¶
1、
2、结果验证
二、基于_reindex的API迁移¶
2.1 环境准备¶
1、搭建好两套多实例集群
[root@elk121 ~]# curl 192.168.1.121:9200/_cat/nodes
192.168.1.121 58 25 0 0.00 0.01 0.05 cdfhilmrstw - elk121
192.168.1.122 68 26 0 0.00 0.01 0.05 cdfhilmrstw * elk122
192.168.1.123 56 34 0 0.05 0.03 0.05 cdfhilmrstw - elk123
[root@elk121 ~]# curl 192.168.1.121:19200/_cat/nodes
192.168.1.121 55 25 0 0.00 0.01 0.05 mdi - elk121
192.168.1.122 55 26 0 0.00 0.01 0.05 mdi - elk122
192.168.1.123 66 34 0 0.04 0.03 0.05 mdi * elk123
2、在ES6环境创建文档
{
"name": "痴汉",
"age": 35,
"hobby": ["吃鸡","丝袜","rap"]
}
{
"name": "李四",
"age": 30,
"hobby": ["吃鸡","丝袜","rap"]
}
{
"name": "张三",
"age": 26,
"hobby": ["吃鸡","丝袜","rap"]
}
{
"name": "李文轩",
"age": 20,
"hobby": ["吃鸡","丝袜","rap"]
}
注意:在Postman执行时需要单个单个执行,上面只是为了方便,放到一起而已

完成后,打开ES Head扩展程序查看结果,观察到成功创建文档到ES6

2.2 同集群迁移实战¶
2.2.1 ES6集群索引拷贝¶
1、填写POST请求http://192.168.1.121:19200/_reindex,在ES6集群进行索引拷贝
{
"source": {
"index": "es111"
},
"dest": {
"index": "es111-new"
}
}

2、打开ES Head扩展程序输入http://192.168.1.121:19200/查看结果,观察到ES6数据已经够成功拷贝

2.2.2 ES7集群索引拷贝¶
1、填写POST请求http://192.168.1.121:9200/_reindex,在ES7集群进行索引拷贝
{
"source": {
"index": "es-shopping"
},
"dest": {
"index": "es-shopping-new"
}
}

2、打开ES Head扩展程序输入http://192.168.1.121:9200/查看结果,观察到ES7数据已经够成功拷贝

2.3 不同集群迁移实战(ES6到ES7)¶
1、在elk121节点上修改配置文件
[root@elk121 ~]# vim /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
…
…
reindex.remote.whitelist: "192.168.1.*:19200"
说明:192.168.1.*是集群主机的网段
配置完成后,如下:
[root@elk121 ~]# egrep -v '^$|^#' /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
cluster.name: es
path.data: /es/data/es7
path.logs: /es/logs/es7
network.host: 192.168.1.121
discovery.seed_hosts: ["elk121","elk122","elk123"]
cluster.initial_master_nodes: ["elk121","elk122","elk123"]
reindex.remote.whitelist: "192.168.1.*:19200"
2、在elk121节点上同步配置文件
| [root@elk121 ~]# data_rsync.sh /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml |
|---|
3、在elk122节点和elk123节点上修改network.host为各自IP,修改完成后,配置内容如下
[root@elk122 ~]# egrep -v '^$|^#' /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
cluster.name: es
path.data: /es/data/es7
path.logs: /es/logs/es7
network.host: 192.168.1.122
discovery.seed_hosts: ["elk121","elk122","elk123"]
cluster.initial_master_nodes: ["elk121","elk122","elk123"]
reindex.remote.whitelist: "192.168.1.*:19200"
[root@elk123 ~]# egrep -v '^$|^#' /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
cluster.name: es
path.data: /es/data/es7
path.logs: /es/logs/es7
network.host: 192.168.1.123
discovery.seed_hosts: ["elk121","elk122","elk123"]
cluster.initial_master_nodes: ["elk121","elk122","elk123"]
reindex.remote.whitelist: "192.168.1.*:19200"
4、在elk121节点、lk122节点和elk123节点上重启ES7服务
[root@elk121 ~]# systemctl restart es7
[root@elk122~]# systemctl restart es7
[root@elk123~]# systemctl restart es7
重启后进行集群状态检测
[root@elk121 ~]# curl 192.168.1.121:19200/_cat/nodes
192.168.1.121 44 25 0 0.13 0.08 0.06 mdi - elk121
192.168.1.122 59 26 0 0.19 0.10 0.08 mdi - elk122
192.168.1.123 58 32 0 0.16 0.08 0.07 mdi * elk123
[root@elk121 ~]# curl 192.168.1.121:9200/_cat/nodes
192.168.1.121 65 25 2 0.12 0.07 0.06 cdfhilmrstw - elk121
192.168.1.122 56 26 3 0.19 0.10 0.08 cdfhilmrstw * elk122
192.168.1.123 40 32 3 0.16 0.08 0.07 cdfhilmrstw - elk123
5、填写POST请求http://192.168.1.121:9200/_reindex,在ES6集群索引es111中age大于25的数据导入到ES7中,并重新定义名为es7-111的索引
{
"source": {
"index": "es111",
"remote": {
"host": "http://192.168.1.121:19200"
},
"query": {
"bool": {
"filter": {
"range": {
"age": {
"gt": 25
}
}
}
}
}
},
"dest": {
"index": "es7-111"
}
}

6、打开ES Head扩展程序输入http://192.168.1.121:9200/查看结果,观察到ES6数据已经够成功迁移到ES7

三、基于1ogstash实现索引跨集群迁移¶
温馨提示:
对于低版本的数据迁移到高版本时,比如从Es5迁移到ES7,应该注意不同点:
(1)默认的分片数量和副本数量;
(2)默认的文档类型是否相同,尤其是在Es7版本中移除了type类型,仅保留了"_doc"这一种内直类型;