ElasticSearch7.3学习(三)----采用restful风格 批量(bulk)增删改
Bulk 操作是将文档的增删改查一些列操作,通过一次请求全都做完。目的是减少网络传输次数。
语法:
1 2 3 | POST /_bulk { "action" : { "metadata" }} { "data" } |
如下操作,创建14,创建5,删除5,更新14
1 2 3 4 5 6 7 8 | POST /_bulk { "create" : { "_index" : "test_index" , "_id" : "14" }} { "test_field" : "test14" } { "create" : { "_index" : "test_index" , "_id" : "5" }} { "test_field" : "test14" } { "delete" : { "_index" : "test_index" , "_id" : "5" }} { "update" : { "_index" : "test_index" , "_id" : "14" } } { "doc" : { "test_field" : "bulk test" } } |
结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | { "took" : 1520 , "errors" : false , "items" : [ { "create" : { "_index" : "test_index" , "_type" : "_doc" , "_id" : "14" , "_version" : 1 , "result" : "created" , "_shards" : { "total" : 2 , "successful" : 1 , "failed" : 0 }, "_seq_no" : 0 , "_primary_term" : 1 , "status" : 201 } }, { "create" : { "_index" : "test_index" , "_type" : "_doc" , "_id" : "5" , "_version" : 1 , "result" : "created" , "_shards" : { "total" : 2 , "successful" : 1 , "failed" : 0 }, "_seq_no" : 1 , "_primary_term" : 1 , "status" : 201 } }, { "delete" : { "_index" : "test_index" , "_type" : "_doc" , "_id" : "5" , "_version" : 2 , "result" : "deleted" , "_shards" : { "total" : 2 , "successful" : 1 , "failed" : 0 }, "_seq_no" : 2 , "_primary_term" : 1 , "status" : 200 } }, { "update" : { "_index" : "test_index" , "_type" : "_doc" , "_id" : "14" , "_version" : 2 , "result" : "updated" , "_shards" : { "total" : 2 , "successful" : 1 , "failed" : 0 }, "_seq_no" : 3 , "_primary_term" : 1 , "status" : 200 } } ] } |
总结:
为啥不采用Java里面传统的Json对象去实现批量操作,原因为解析Json字符串的时候,会保留一个比较大的Json对象放在Java内存中,大数据量的时候明显不可取。因此按照普通字符串读取就OK了。
1. 功能:
- delete:删除一个文档,只要1个json串就可以了
- create:相当于强制创建 PUT /index/type/id/_create
- index:普通的put操作,可以是创建文档,也可以是全量替换文档
- update:执行的是局部更新partial update操作
2. 格式:每个json不能换行。相邻json必须换行。
3. 隔离:每个操作互不影响。操作失败的行会返回其失败信息。
4. 实际用法:bulk请求一次不要太大,否则一下积压到内存中,性能会下降。所以,一次请求几千个操作、大小在几M正好。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
本文来自博客园,作者:|旧市拾荒|,转载请注明原文链接:https://www.cnblogs.com/xiaoyh/p/15978171.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南