Bulk 批量操作

(1) 比如,我这里,在$ES_HOME里,新建一文件,命名为requests。(这里为什么命名为request,去看官网就是)在Linux里,有无后缀没区别。

1

2

3

4

5

6

7

8

9

10

[root@backup01 elasticsearch-6.8.6]# vi requests

 

{"index":{"_index":"my_store","_type":"my_index","_id":"11"}}

{"price":10,"productID":"1111"}

{"index":{"_index":"my_store","_type":"my_index","_id":"12"}}

{"price":20,"productID":"1112"}

{"index":{"_index":"my_store","_type":"my_index","_id":"13"}}

{"price":30,"productID":"1113"}

{"index":{"_index":"my_store","_type":"my_index","_id":"14"}}

{"price":40,"productID":"1114"}

  

(2)执行命令

1

2

3

4

5

 curl  -PUT  '192.168.80.200:9200/_bulk'   --data-binary @requests;

   curl  -XPOST  '192.168.80.200:9200/_bulk'   --data-binary @requests;

bulk的格式:
{action:{metadata}}\n
{requstbody}\n (请求体)action:(行为),包含create(文档不存在时创建)、update(更新文档)、index(创建新文档或替换已用文档)、delete(删除一个文档)。
create和index的区别:如果数据存在,使用create操作失败,会提示文档已存在,使用index则可以成功执行。
metadata:(行为操作的具体索引信息),需要指明数据的_index、_type、_id。
示例:
{"delete":{"_index":"lib","_type":"user","_id":"1"}}

批量添加

POST /lib2/books/_bulk
{"index":{"_id":1}}  \\行为:索引信息
{"title":"Java","price","55"} \\请求体
{"index":{"_id":2}}
{"title":"Html5","price","45"}
{"index":{"_id":3}}
{"title":"Php","price","35"}`
{"index":{"_id":4}}
{"title":"Python","price","50"}//返回结果
{"took": 60,"error": false //请求是否出错,返回false、具体的错误"items": [//操作过的文档的具体信息{"index":{"_index": "lib","_type": "user","_id": "1","_version": 1,"result": "created", //返回请求结果"_shards": {"total": 1,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_trem": 1"status": 200}},...]
}

批量删除 
删除的批量操作不需要请求体

POST /lib/books/_bulk
{"delete":{"_index":"lib","_type":"books","_id":"4"}} //删除的批量操作不需要请求体
{"create":{"_index":"tt","_type":"ttt","_id":"100"}}
{"name":"lisi"} //请求体
{"index":{"_index":"tt","_type":"ttt"}} //没有指定_id,elasticsearch将会自动生成_id
{"name":"zhaosi"} //请求体
{"update":{"_index":"lib","_type":"books","_id":"4"}} //更新动作不能缺失_id,文档不存在更新将会失败
{"doc":{"price":58}} //请求体
bluk一次最大处理多少数据量
bulk会将要处理的数据载入内存中,所以数据量是有限的,最佳的数据两不是一个确定的数据,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。一般建议是1000-5000个文档,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中,bulk的线程池配置是内核数+1。bulk批量操作的json格式解析
bulk的格式:
{action:{metadata}}\n
{requstbody}\n (请求体)不用将其转换为json对象,直接按照换行符切割json,内存中不需要json文本的拷贝。
对每两个一组的json,读取meta,进行document路由。
直接将对应的json发送到node上。
为什么不使用如下格式:[{"action":{},"data":{}}]
1
这种方式可读性好,但是内部处理就麻烦;耗费更多内存,增加java虚拟机开销:将json数组解析为JSONArray对象,在内存中就需要有一份json文本的拷贝,宁外好友一个JSONArray对象。
解析json数组里的每个json,对每个请求中的document进行路由。
为路由到同一个shard上的多个请求,创建一个请求数组。
将这个请求数组序列化。

Bulk API实现批量操作相关推荐

  1. java bulk_elasticsearch Java API 之Bulk API(批量操作)

    为了提高操作效率,java api提供一个比较有用的批量操作功能,可以一次性提交多种操作,减少与节点的交互的时间. 总的来说,写法也非常简单,有点类似java中的list. // 静态引入jar包 i ...

  2. es bulk java_Java Elasticsearch Bulk API 批量操作

    ES的Bulk API主要用于在单个请求中,批量执行创建.更新.删除文档操作,避免循环发送大量的ES请求. 创建BulkRequest对象 BulkRequest request = new Bulk ...

  3. elasticsearch api中的Bulk API操作

    在elasticsearch中bulk的概念,其实和sql中的group by有异曲同工的作用. The bulk API allows one to index and delete several ...

  4. 【elasticsearch】bulk api奇特的json格式的原因

    1. bulk api的语法 正常的语法: {"action": {"meta"}}\n {"data"}\n {"action& ...

  5. java bulk_Elasticsearch Java High Level REST Client(Bulk API)

    Bulk API Java High Level REST Client提供了Bulk处理器来帮助处理批量请求. Bulk请求 BulkRequest可以使用一个请求执行多个索引.更新和/或删除操作. ...

  6. es7 bulk api 批量插入es

    post  localhost:9200/cuiji/_doc/_bulk {"index":{}} {"RCRD_ID":"RD_TR_001&qu ...

  7. 企查查api接口批量操作实战

    最近博主因为工作需要,需要对一些企业的工商信息进行验证,想来也只有企查查能够提供这样的服务.但是第一次使用企查查的api还是很呆萌的,不过经过对api文档的理解(这里就不吐槽企查查的技术支持了,完全是 ...

  8. 企查查、天眼查、启信宝API怎么批量操作调用,API接口应用场景。

    企查查API:企业工商信用信息API数据接口 - 企查查开放平台 天眼查API:天眼查开放平台 | API数据接口 | 企业数据 - 天眼查 (tianyancha.com) 启信宝API:启信宝数据 ...

  9. elasticsearch使用bulk实现批量操作

    本篇文章提供ES原生批量操作语法及使用bulk批量操作文档.文章依旧提供语法,具体实现大家根据语法,在对应处进行替换即可 一.原生批量获取文档 1.获取指定文档值(1) 语法: GET /_mget ...

最新文章

  1. c调用python打包_如何将C++的API封装成python可调用形式?
  2. flask and html connection
  3. Linux chown命令:给资源绑定用户权限
  4. Linux驱动技术(四) _异步通知技术
  5. word手写字体以假乱真_Word小技巧|打印作文草稿纸
  6. 4 月 10 截止 | 南开大学百名青年学科带头人孙宝发课题组招生
  7. 凝思系统如何调节分辨率_如何消除步进电机的噪音和振动?
  8. 测试平台的发展与未来趋势
  9. redis常用的数据类型
  10. Codeforces Round #776 (Div. 3)
  11. Apollo学习笔记(8)车辆动力学模型
  12. python word 英语音标_(完整word版)英语音标大全
  13. Guava---Splitter
  14. 高途季报图解:营收11亿 已停止K-9服务,谋求转型
  15. Java集合基础:2. List接口和Set接口
  16. 为什么腾讯微云上传文件会显示服务器繁忙呢,API - 微云
  17. whistle工具常用功能
  18. 服务器对接虚拟主机,服务器对接虚拟主机
  19. 计算机三级数据库技术备考知识点总结:第1~3章
  20. ORACLE 11G 闪回数据归档

热门文章

  1. 火狐浏览器title过长显示不全_浏览器渲染
  2. 没有bug队——加贝——Python 55,56
  3. java search 不能使用方法_java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段...
  4. vue @click 多个事件_VUE学习记录3
  5. 9.获取当前时区时间和utc时间的工具方法
  6. git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
  7. 中值滤波去除图像噪声的matlab程序
  8. C# 代理访问页面并获取数据
  9. SpringMVC实现PUT请求上传文件
  10. droidbox官网