0

在尝试使用 python 的批量 API 索引大约 20000 条记录(每条记录的大小约为 100kb)时,我看到消耗的最大写入队列大小为 6。我对批量索引的以下理解是否正确(默认配置为 500 块和 100 mb块大小)?

  1. Bulk API 将向 ES 发送 40 个请求(20000/500)。
  2. 每个批量请求都以原子方式持久化,即全部 500 个块或没有。
  3. 如果活动线程忙,则批量请求将作为一个整体对象汇集在写入队列中。
4

1 回答 1

1
  1. 这是正确的
  2. 不,每个批量操作都是独立的,肯定有可能有些通过而有些失败。您需要确保您的客户端代码处理此类情况并重试失败的批量操作。
  3. 所有批量操作都由write线程池处理。如果多个批量操作同时到达,那么其中一些将被处理(取决于接收批量操作的节点上的核数),不能处理的将被添加到队列中,其大小是 10000(这意味着 10000 个索引操作可以在处理之前排队)。一旦该队列被填满,索引操作将开始被拒绝(HTTP 429)
于 2021-03-22T07:59:04.573 回答