ElasticSearch 7.3采用restful风格 批量(bulk)增删改
Posted |旧市拾荒|
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch 7.3采用restful风格 批量(bulk)增删改相关的知识,希望对你有一定的参考价值。
Bulk 操作是将文档的增删改查一些列操作,通过一次请求全都做完。目的是减少网络传输次数。
语法:
POST /_bulk "action": "metadata" "data"
如下操作,创建14,创建5,删除5,更新14
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"
结果
"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
以上是关于ElasticSearch 7.3采用restful风格 批量(bulk)增删改的主要内容,如果未能解决你的问题,请参考以下文章