多语言展示
当前在线:832今日阅读:167今日分享:16

ElasticSearch学习--批量操作命令之Bulk API

在分享ElasticSearch增删改查操作的经验中(请参考如下经验引用),每次请求只会操作一个索引的一个文档,相对于建立连接的时间,这并不合算,本篇经验就分享一下ElasticSearch给我们提供的一个批量操作API : _bulk, 其支持的操作类型包括:index, create, update, delete 0ElasticSearch学习--文档的增删改查(CRUD)操作
工具/原料

ElasticSearch, Kibana

方法/步骤
1

批量新增文档--index方式命令格式:  POST _bulk  {“index”: {“_index”: 索引名称, “_id”: 文档ID1}}   {新增文档1内容}{“index”: {“_index”: 索引名称, “_id”: 文档ID2}}   {新增文档2内容}......上述命令可以一次性向索引中新增多条文档数据,注意可以向同一个索引中新增,也可以向不同索引中新增。对于 _bulk 命令,处理的多条文档中,一个文档失败并不会影响其他文档操作,每一个文档操作均会返回一个对应的结果。 图1示:通过 _bulk 批量向索引中新增文档数据图2示:再次执行该命令,因为使用“Index文档”的方式新增数据,所以新增相同ID的数据不会报错,文档元数据_version的值会增 1

2

批量新增文档--create方式命令格式:  POST _bulk  {“create”: {“_index”: 索引名称, “_id”: 文档ID1}}   {新增文档1内容}{“create”: {“_index”: 索引名称, “_id”: 文档ID2}}   {新增文档2内容}......图1示:通过 _bulk 批量向索引中新增文档数据图2示:再次执行该命令,因为使用“Create文档”的方式新增数据,所以新增相同ID的数据会因为冲突报错,全部失败图3示:部分文档ID冲突,部分不冲突,不冲突的文档新增成功,冲突的文档新增失败

3

批量更新文档命令格式:  POST _bulk  {“update”: {“_index”: 索引名称, “_id”: 文档ID1}}   {“doc”: {文档1内容} }{“update”: {“_index”: 索引名称, “_id”: 文档ID2}}   {“doc”: {文档2内容} }......图1示:通过 _bulk 批量更新索引中的文档数据,其中一条更新成功,一条因为无法获取对应ID的文档,更新失败图2示:获取更新后的文档信息,确认文档更新成功

4

批量删除文档命令格式:  POST _bulk  {“delete”: {“_index”: 索引名称, “_id”: 文档ID1}}   {“delete”: {“_index”: 索引名称, “_id”: 文档ID2}}   ......图1示:通过 _bulk 批量删除索引中的文档数据,其中一条删除成功,一条因为无法获取指定ID的文档而返回not_found 图2示:获取删除的文档信息,确认文档删除成功

5

注意,上述命令演示中均操作的是一个索引中的多条文档数据,只要将请求传递的参数中的“索引名称”字段更换为别的索引,这些命令就可以操作多条索引的多个文档数据了。

推荐信息