在ElasticSearch的使用过程中,若每次请求仅对单个索引中的单个文档进行增删改查,相较于连接开销,效率较低。为此,ElasticSearch提供了_bulk批量操作API,可显著提升处理效率。该接口支持多种操作类型,包括创建、索引、更新和删除文档,允许在一次请求中打包执行多个操作,减少网络往返,优化性能,特别适用于大规模数据处理场景。
1、 批量添加文档,采用索引方式处理
2、 指令格式:
3、 将文档ID1存入指定索引名称的索引中,构建对应的索引结构信息。
4、 新增文档内容已更新
5、 将指定文档ID2的数据写入名为索引名称的索引中,用于创建或更新该文档的索引记录。
6、 新增文档二内容已更新
7、 可批量向同一或不同索引添加多条文档数据,操作灵活,支持一次性写入多个文档至指定索引中。
8、 在执行 _bulk 命令时,多个文档的操作彼此独立,单个文档处理失败不会中断其他文档的执行,每个操作都会返回各自的结果。
9、 图1显示利用_bulk操作批量向索引添加文档数据的过程。
10、 图2显示:重复执行该命令时,由于采用Index文档方式添加数据,即使ID相同也不会报错,仅会使文档元数据中的_version值递增1。
11、 批量创建文档,采用create方法新增
12、 指令格式:
13、 创建操作,指定索引名称和文档ID1,将数据写入对应位置。
14、 新文档内容已添加
15、 创建文档,指定索引名称和文档唯一标识符ID2,存入相应数据存储位置。
16、 新增文档二内容已更新
17、 图1显示利用_bulk操作批量添加文档至索引
18、 图2显示:重复执行该命令时,由于采用Create文档方式添加数据,相同ID的数据会因冲突而报错,导致全部新增操作失败。
19、 图3显示部分文档因ID冲突导致新增失败,另一些ID不冲突的文档则成功添加。
20、 批量更新文件
21、 指令格式:
22、 更新操作指向指定索引名称下的文档,其唯一标识为文档ID1,用于修改对应数据内容。
23、 更新操作针对指定索引名称下的文档,使用文档ID2作为唯一标识进行数据修改。
24、 文档二的具体内容如下所示。
25、 图1显示利用_bulk操作批量更新索引文档,一条成功,另一条因无法找到对应ID的文档而更新失败。
26、 图2显示已获取最新文档信息,验证更新完成。
27、 批量清除文档内容
28、 指令格式:
29、 删除指定索引中 _id 为文档ID1 的文档。
30、 删除指定索引中的文档,需提供索引名称和文档ID2作为操作参数。
31、 图1显示利用_bulk操作批量删除索引中文档,其中一条成功删除,另一条因无法找到指定ID的文档而返回not_found错误。
32、 图2显示已获取被删文档信息,验证删除操作成功完成
33、 上述命令示例均针对单个索引内的多条文档进行操作,只需将请求参数中的索引名称替换为其他索引,即可实现对多个索引中多份文档数据的处理。
