我正在使用elasticsearch java API。
我有一个批量请求,并且我要在此批量中添加几个更新请求。我没有正在执行的更新次数,因为它取决于之前的操作。
bulkRequest.add(esClientManager.getEsClient().prepareUpdate(...).setDoc(...).setDocAsUpsert(true));
我可能会花费数百万时间来做这件事。
我的问题很简单:批量将在满时自行执行,还是我必须自己检查并在需要时执行它(使用 numberOfActions 检索批量请求的数量)?
最佳答案
你必须自己做。至于什么时候,就看你的数据了。对于我所做的一切,我尝试处理大约 1000 条记录(在我的例子中相当于大约 500K 批量请求)。这似乎是一个很好的内存/时间权衡。
我通常做的事情是这样的
BulkRequestBuilder br = null;
/// some looping construct
while (rs.next()) {
if (br != null && br.numberOfActions() >= batchSize) {
processResponse(br.execute().get());
br = null;
}
if (br == null) {
br = client.prepareBulk();
}
// do whatever to create IndexRequest
br.add(ir);
}
if (br != null) {
processResponse(br.execute().get());
}
关于java - elasticsearch上满了时会自动执行批量操作吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914308/