博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch学习笔记3: bulk批量处理
阅读量:6214 次
发布时间:2019-06-21

本文共 2372 字,大约阅读时间需要 7 分钟。

hot3.png

elasticsearch提供批量处理的api: bulk

bulk API 允许在单个步骤中进行多次 create 、 index 、 update 或 delete 请求

bulk的请求体:

{ action: { metadata }}\n{ request body        }\n{ action: { metadata }}\n{ request body        }\n...

请求体为多个单行json数据用\n链接起来

action/metadata行,指定操作类型和参数

action/metadata 行指定 哪一个文档 做 什么操作 。 action/metadata 行指定 哪一个文档 做 什么操作 。

action 必须是以下选项之一:

create 如果文档不存在,那么就创建它。index创建一个新文档或者替换一个现有的文档。update部分更新一个文档。delete删除一个文档。

metadata 应该 指定被索引、创建、更新或者删除的文档的 _index 、 _type 和 _id

例如,一个 delete 请求看起来是这样的:

{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}

一个create请求:

{ "create":  { "_index": "website", "_type": "blog", "_id": "123" }}{ "title":    "My first blog post" }

create请求必须跟上一行,内容为创建的文档参数

如果不指定 _id ,将会自动生成一个 ID :

一个index请求:

{ "index": { "_index": "website", "_type": "blog" }}{ "title":    "My second blog post" }

把所有的操作组合在一起,一个完整的 bulk 请求 有以下形式:

POST /_bulk{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }} { "create": { "_index": "website", "_type": "blog", "_id": "123" }}{ "title":    "My first blog post" }{ "index":  { "_index": "website", "_type": "blog" }}{ "title":    "My second blog post" }{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }{ "doc" : {"title" : "My updated blog post"} }

bulk请求返回的结构类型如下:

{       "took": 4,       "errors": false,        "items": [          {  "delete": {                "_index":   "website",                "_type":    "blog",                "_id":      "123",                "_version": 2,                "status":   200,                "found":    true          }},          {  "create": {                "_index":   "website",                "_type":    "blog",                "_id":      "123",                "_version": 3,                "status":   201          }},          {  "create": {                "_index":   "website",                "_type":    "blog",                "_id":      "EiwfApScQiiy7TIKFxRCTw",                "_version": 1,                "status":   201          }},          {  "update": {                "_index":   "website",                "_type":    "blog",                "_id":      "123",                "_version": 4,                "status":   200          }}       ]    }

items为一个列表,依次是请求操作的返回结果

另外可以将metadata中的索引,类型,文档id都可以放在url中 metadata中如果有会覆盖url中指定的索引类型和id

转载于:https://my.oschina.net/u/2299936/blog/1569826

你可能感兴趣的文章
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
癌细胞最偏爱10个字,你却每天都在喂养“它”!
查看>>
功能测试的国别差异(日本与欧美)
查看>>
我的友情链接
查看>>