在java中避免elasticsearch重新索引超时

ldioqlga  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(557)

下面的代码在记录数较高时在客户端(elasticsearch客户端)中返回超时。

CompletableFuture<BulkByScrollResponse> future = new CompletableFuture<>();
client.reindexAsync(request, RequestOptions.DEFAULT, new ActionListener<BulkByScrollResponse>() {
@Override
public void onResponse(BulkByScrollResponse bulkByScrollResponse) {
    future.complete(bulkByScrollResponse);
}

@Override
public void onFailure(Exception e) {
    future.completeExceptionally(e);
}
});
BulkByScrollResponse response = future.get(10, TimeUnit.MINUTES); // client timeout occured before this timeout

下面是客户端配置。

connectTimeout: 60000
socketTimeout: 600000
maxRetryTimeoutMillis: 600000

有没有办法无限期地等到重新索引完成?

carvr3hs

carvr3hs1#

我不认为它是一个更好的选择,无限期地等待完成重新索引过程,并给予非常高的超时值,因为这不是一个正确的修复,将造成更多的弊大于利。
相反,您应该检查响应,添加更多调试日志,以找到根本原因并解决它们。另外,请看一下我的提示,以提高重新索引速度,这应该会解决一些潜在的问题。

相关问题