Elasticsearch的Java客户端--文档操作--索引复制请求

官方文档: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);
    }

猜你喜欢

转载自blog.csdn.net/imonkeyi/article/details/120607706