elasticsearch将某个集群的索引导入到另外一个集群中

本文介绍了如何使用scroll API将Elasticsearch的一个集群的索引数据迁移到另一个集群。这种方法避免了直接拷贝文件的弊端,适合大规模数据迁移。代码适用于Elasticsearch 2.x版本,效率约为每小时处理5千万条数据。附带了执行脚本,便于后台运行和进程管理。
摘要由CSDN通过智能技术生成

在使用elasticsearch的过程中,肯定有很多朋友有过这种需求,就是将某个集群中的索引导入另外一个集群中去,这种情况呢,有两种办法,一种就是直接拷贝文件,简单粗暴,但是有很多弊端,比如说文件非常大的话拷贝起来也很麻烦,另外拷贝的过程中也容易乱,比较低端,最后拷贝完之后还得重启集群不是很灵活;今天我主要说的就是第二种方式,通过scroll的方式进行处理。

处理的时候需要的参数,分别为:源索引,源集群名称,源ip,目的索引,目的集群名称,目的ip,索引类型;通过构建一个源settings,一个目的settings去处理。

具体参见下面的代码(此代码适用于2.x到2.x版本,如果有其他的版本,只需要修改下es相关的类名称即可适用,如果有改变的话)

另外通过测试,效率也还可以,一个小时大概能导出5千万左右的数据,如果数据量不大,还会更快

行了不废话了,直接上代码:

import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.search.SearchHit;

/**
 * java -cp "/root/es/lib/*"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值