官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-reindex.html
索引复制请求
用于从一个或多个已经存在的索引中复制所有文档到目标索引,目标索引可以不存在,需要注意的是不会复制源索引的配置信息到目标索引中,比如映射,分片数量等。
执行步骤
public static void main(String[] args) throws IOException {
// 1.创建客户端
RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
RestHighLevelClient client = new RestHighLevelClient(clientBuilder);
//2.创建请求
ReindexRequest request = new ReindexRequest();
//设置源索引和目标索引
request.setSourceIndices("source1", "source2");
request.setDestIndex("dest");
//请求完成后刷新索引
request.setRefresh(true);
//3.执行请求
BulkByScrollResponse response = client.reindex(request, RequestOptions.DEFAULT);
//4.返回数据
TimeValue took = response.getTook();
long total = response.getTotal();
System.out.println(took);
System.out.println(total);
}
以任务形式提交请求
当以任务形式提交请求时,程序将不会等待请求完成。其效果和将可选参数 wait_for_completion 设置为 false 一样
@Test
public void TestNotWaitCompletion() throws IOException {
// 1.创建客户端
RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
RestHighLevelClient client = new RestHighLevelClient(clientBuilder);
//2.创建请求
ReindexRequest request = new ReindexRequest();
//设置源索引和目标索引
request.setSourceIndices("source1", "source2");
request.setDestIndex("dest");
//请求完成后刷新索引
request.setRefresh(true);
//3.执行请求
TaskSubmissionResponse taskSubmissionResponse = client.submitReindexTask(request, RequestOptions.DEFAULT);
//4.返回数据
String task = taskSubmissionResponse.getTask();
System.out.println(task);
}