前言

  • 本文对 Elasticsearch 7.17 有效
  • 梳理 Elasticsearch Python 客户端的异步批量写入

官方文档

解读

  • qbit 开始对 stats_onlyraise_on_error 参数的用法有些迷惑
  • 下面是研究后的解读
  • 默认返回成功写入的数据条数和错误列表
  • 如果 stats_only 设置为 True,返回写入成功的条数和失败的条数
  • raise_on_error 默认值为 True,也就是如果有错误数据,默认会抛出异常,应用程序不能得到成功写入的数量和错误列表(client 自身有记录)
  • 无论这两个参数怎么设置,都会把所有正常数据写入到ES,错误数据记录到 errors 列表
  • 有大量错误数据时,errors 列表会占用大量内存,建议使用 async_streaming_bulk 函数

组合

stats_only=False AND raise_on_error=True(默认)

  • 无异常数据时,返回得到成功写入条数和空的错误列表

    success, []
  • 有异常数据时,抛出异常,不能得到返回值

stats_only=False AND raise_on_error=False

  • 无异常数据时,返回得到写入成功的条数和空的错误列表(空)

    success, []
  • 有异常数据时,返回得到写入成功条数和写入失败的错误列表(非空)

    success, [1,2,3...]

stats_only=True AND raise_on_error=True

  • 无异常数据时,返回得到写入成功条数和写入失败的条数(0)

    success, 0
  • 有异常数据时,抛出异常,不能得到返回值

stats_only=True AND raise_on_error=False

  • 无异常数据时,返回得到写入成功条数和写入失败的条数(0)

    success, 0
  • 有异常数据时,不抛出异常,返回得到写入成功条数和写入失败的条数(大于0)

    success, failed
本文出自 qbit snap

qbit
268 声望279 粉丝