ElasticSearch-batch-bulk-批处理
2025-01-22 08:19:30 717 字
This post is also available in English and alternative languages.
ElasticSearch版本:6.5.0(点击跳转官方文档)
bulk api允许我们使用单一请求来实现多个文档的’create、index、update、delete’。
bulk 允许的行为:
行为 | 解释 |
---|---|
create | 当文档不存在时创建文档 |
index | 常见新文档或替换已有文档 |
update | 局部更新文档 |
delete | 删除一个文档 |
在执行上述动作时,必须指定文档的_index、_type、_id 这些元数据
注意!bulk的请求体有如下规范:
每行必须以"\n"符号结尾,包括最后一行。这些都是作为每行有效分离而做的标记
每一行的数据不能包含未被转义的换行符。避免干扰分析,这意味着,json格式不能美化。
请求报文
1 | POST /_bulk |
注意:类似create、update之类,有文档参数的,换行在第二行写就行了。
请求报文做了些什么事?
删除 - 索引demo、类型testDate、id为3 的文档
创建 - 索引megacorp、类型employee、id为999 的文档,文档内容为第三行内容
更新 - 索引books、类型book、id为19 的文档,更新内容为第五行内容。
响应报文
1 | { |
确认下es中的结果
上面每个子请求都是独立执行的,所以一个子请求的错误并不影响其他请求。如果任何一个子请求失败,顶层error会标记为true,然后出现错误信息。bulk请求不是原子操作,他们不能实现事务。
如果 bulk 在同一个index、type下,就不用为每个文档指定相同的元数据了,写在url上面就行。