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正好。

 

以上是关于ElasticSearch 7.3采用restful风格 批量(bulk)增删改的主要内容,如果未能解决你的问题,请参考以下文章

学习Elasticsearch

ElasticSearch 7.3 结合Spring boot进行增删改查和批量(bulk)详解

Elasticsearch1.7.3升级到2.4.2记录

Centos 7.3 简便搭建EFK日志分析

ElasticSearch插件:“无法解析配置路径”错误

ELK日志服务器的快速搭建并收集nginx日志