繁体   English   中英

如何使用 java 高级别 rest3A84DEFA4886DAFCE6A4E7AE63A3BAEED443C48Z 在 elasticsearch 中知道是成功还是失败

[英]How to know if a reindex from remote task is sucessful or failed in elasticsearch using the java high level rest API

我正在使用 ElasticSeach 高级 rest api 客户端从另一个集群进行一些自定义重新索引。

    ReindexRequest reindexRequest = new ReindexRequest()
        .setMaxDocs(3000)
        .setDestIndex("my-new-index")
        .setTimeout(TimeValue.timeValueHours(1))
        .setRemoteInfo(
            new RemoteInfo("http", "otherhost", 9200, "/",
                new BytesArray(selectQuery.toString()), "user",
                "password",
                Map.of()), TimeValue.timeValueSeconds(30),
                TimeValue.timeValueSeconds(30)))
        .setSourceIndices("old-index")
        .setScript(new Script(ScriptType.STORED, null, "add_sc_id", Map.of("sc_id", some-id)));

      TaskSubmissionResponse task = esClient.submitReindexTask(reindexRequest, RequestOptions.DEFAULT);

我定期检查任务以查看它是否已完成使用任务 API

Optional<GetTaskResponse> getTaskResponse =
            esClient.tasks().get(new GetTaskRequest(nodeId, taskId), RequestOptions.DEFAULT);

使用它,我可以使用getTaskResponse.get().isCompleted()查看任务是否已完成,但无论如何我都看不到它是否成功。

通过使用 curl 执行GET _taks/nodeId:taskId ,我看到有一个response.failures字段。

有没有办法使用 Java 高级 rest api 客户端检索此字段? 还是有另一种方法可以实现这一目标?

请检查列表任务 API

您可以使用下面的 Java 代码获取任务失败信息:

ListTasksRequest request = new ListTasksRequest();
request.setActions("cluster:*"); 
request.setNodes("nodeId1", "nodeId2"); 
request.setParentTaskId(new TaskId("parentTaskId", 42)); 
ListTasksResponse responseTask = client.tasks().list(request,RequestOptions.DEFAULT);
List<TaskOperationFailure> taskFailures = response.getTaskFailures();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM