![](/img/trans.png)
[英]Difference between elasticsearch ReIndex task REST API implementation and Java rest high level client
[英]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.