批量加载:确保所有BulkProcessor作业都已完成(Java客户端API)



我想制作一个将数据批量加载到ES的过程,以便

  1. 有两个索引:index_1、index_2和指向index_1或index_2的别名
  2. 数据被批量加载到index_1或index_2
  3. 如果所有数据都加载成功,则会更改别名

我正在使用Java客户端API。

我想确保当我将数据添加到BulkProcessor时,它已经完成了所有作业,然后我才能继续评估是否存在任何故障。我跟踪BulkProcessor.Listener.afterBulk.中的故障

在我当前的测试实现中,当所有数据都被推送到BulkProcessor时,我调用BulkProcessor.flush((,然后在检查afterBulk是否记录了任何故障之前添加了一个超时(只是为了确定(。

但问题是:我该怎么做才能确保BulkProcessor没有剩余的作业,并且所有推送的IndexRequest都已完成?

Java客户端API(v<=7.0(中没有检查批量队列大小的机制。你可以自己跟踪添加的id和标记为就绪(afterBulk(的id。

最新更新