ElasticSearch学习--批量操作命令之Bulk API
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、注意,上述命令演示中均操作的是一个索引中的多条文档数据,只要将请求传递的参数中的“索引名称”字段更换为别的索引,这些命令就可以操作多条索引的多个文档数据了。