上一篇:ElasticSearch(3)—CURL操作

1.Bulk的格式

{action:{metadata}}\n  //注意 “\n”表示换行符
{requstbody}\n (请求体)
语法 描述
action (行为),包含create(文档不存在时创建)、update(更新文档)、index(创建新文档或替换已用文档)、delete(删除一个文档)。
metadata (行为操作的具体索引信息),需要指明数据的_index、_type、_id。

create和index的区别:如果数据存在,使用create操作失败,会提示文档已存在,使用index则可以成功执行。

示例:

1. 批量插入

现在有一个文件books.json中有需要批量写入的数据,该文件中的数据如下:

{"index":{"_index":"books","_type":"info","_id":"1"}}
{"name":"西游记","author":"吴承恩","price":"40"}
{"index":{"_index":"books","_type":"info","_id":"2"}}
{"name":"三国演义","author":"罗贯中","price":"41"}
{"index":{"_index":"books","_type":"info","_id":"3"}}
{"name":"水浒传","author":"施耐庵","price":"42"}
{"index":{"_index":"books","_type":"info","_id":"4"}}
{"name":"红楼梦","author":"曹雪芹","price":"43"} //注意:此处还需要点下回车键,否则会报错

使用Xftp将此文件导入linux中的/home/zhangsan/data/目录下:

linux中输入下面的命令

curl -H 'Content-Type:application/json' -XPOST 'http://120.76.217.14:9200/_bulk?pretty' --data-binary '@/home/zhangsan/data/books.json'

然后查询索引:

[zhangsan@tomcat-tst data]$ curl -XGET 'http://120.76.217.14:9200/books/info/_search?pretty'
{"took" : 813,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "books","_type" : "info","_id" : "1","_score" : 1.0,"_source" : {"name" : "西游记","author" : "吴承恩","price" : "40"}},{"_index" : "books","_type" : "info","_id" : "2","_score" : 1.0,"_source" : {"name" : "三国演义","author" : "罗贯中","price" : "41"}},{"_index" : "books","_type" : "info","_id" : "3","_score" : 1.0,"_source" : {"name" : "水浒传","author" : "施耐庵","price" : "42"}},{"_index" : "books","_type" : "info","_id" : "4","_score" : 1.0,"_source" : {"name" : "红楼梦","author" : "曹雪芹","price" : "43"}}]}
}
[zhangsan@tomcat-tst data]$

批量写入成功,

2. 批量处理

{"update":{"_index":"books","_type":"info","_id":"1"}} //更新文档
{"doc":{"name":"人性的弱点","author":"卡耐基"}} //请求体
{"delete":{"_index":"books","_type":"info","_id":"2"}} //删除不需要请求体
{"create":{"_index":"books","_type":"info","_id":"10"}} //当文档不存在的时候创建文档
{"name":"孙子兵法","author":"孙武","price":"42"} //请求体
{"index":{"_index":"books","_type":"info","_id":"3"}} //创建新文档或者替换已用文档
{"name":"厚黑学","author":"李宗吾","price":"50"} //请求体

以上是Bulk批量操作4中基本的action

3. 批量处理的数据量

  因为Bulk操作会将要处理的数据导入到内存中,所以数据量的处理是有限的。能处理多少数据量取决于硬件配置、文档的大小以及复杂性、索引以及搜索负载。

  一般建议是1000-5000个文档,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(config下的elasticsearch.yml)中进行配置。

4. 不重复指定/index/type

  在上面的批量操作文档的多个请求体中,都有同样的/books/info,我们可以在curlURL中指定/books/info,这样你仍然可以覆盖元数据行中的 _index 和 _type , 但是它将使用 URL 中的这些元数据值作为默认值:

POST /books/info
{"index":{"_id":"3"}} //创建新文档或者替换已用文档
{"name":"厚黑学","author":"李宗吾","price":"50"} //请求体
下一篇:ElasticSearch(5)—Head插件

ElasticSearch(4)---Bulk批量操作相关推荐

  1. ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)

    ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...

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

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

  3. ElasticSearch基础之批量操作(mget+mbulk)

      在前面的演示中,我们都是基于一次http查询,每次查询都要建立http的三次握手请求,这样比较耗费性能!因此ES给我们提供了基本的批量查询功能,例如如下的查询,注意里面的index是可以任意指明的 ...

  4. Elasticsearch的bulk用法(python)

    这篇文章介绍Elasticsearch的bulk在Python中的用法,bulk API可以在单个请求中一次执行多个操作(index,udpate,create,delete),使用这种方式可以极大的 ...

  5. python elasticsearch bulk_Elasticsearch之批量操作bulk

    1.bulk相当于数据库里的bash操作. 2.引入批量操作bulk,提高工作效率,你想啊,一批一批添加与一条一条添加,谁快? 3.bulk API可以帮助我们同时执行多个请求 4.bulk的格式: ...

  6. Elasticsearch--入门-删除数据bulk批量操作导入样本测试数据---全文检索引擎ElasticSearch工作笔记008

    3 然后我们再去看在es中怎么用,restapi去删除数据 可以看到上面提供两种方式 DELETE customer/external/1 这个是删除customer这个索引下的external这个类 ...

  7. Bulk批量操作API的介绍

    #多重模式 #批量操作bulk POST /library/books/_bulk {"index": {"_id": 1}} {"title&quo ...

  8. 导入json数据到Elasticsearch(bulk方法)

    一.前言 在前面几章,基本把本地的环境给配置好了,那么配置好了之后,要做的第一件事当然就是导入数据进去.我这边准备的是一份json数据,这里通过ES的bulk API给导入进去. 二.导入数据 1.批 ...

  9. python elasticsearch bulk_Elasticsearch —— bulk批量导入数据

    在使用Elasticsearch的时候,一定会遇到这种场景--希望批量的导入数据,而不是一条一条的手动导入.那么此时,就一定会需要bulk命令! 更多内容参考我整理的Elk教程 bulk批量导入 批量 ...

最新文章

  1. 黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...
  2. c语言数组的一维编程,【C语言】转换一维数组
  3. 外联css及js的使用
  4. Windows server 2003/2008更改远程桌面端口脚本
  5. Lua直接调用动态链接库(DLL或so文件)
  6. Linq中的Where与SkipWhile
  7. python观察日志(part15)--命名元祖namedtuple
  8. passive模式 tcp_FTP主动模式和被动模式的比较
  9. Job 存储和持久化 (第四部分)
  10. SQL ---- 查询字段为逗号拼接的字符串
  11. 2019小程序没必要做了_企业发展小程序的必要原因
  12. 力扣——在排序数组中查找元素的第一个和最后一个位置
  13. 翻译: 4.4. 模型选择Model Selection、欠拟合Underfitting和过拟合Overfitting pytorch
  14. iOS7以上: 实现如“日历”的 NavigationBar
  15. 2017北航计算机系学硕最低录取分,2018北航计算机考研初试经验帖
  16. Linux相关命令(三)
  17. Robotic KDL library
  18. maya 中的 cmds.scriptJob 命令
  19. matlab将图片旋转的代码_论文写作经验分享word+mathtype+matlab
  20. 【迁移学习】特征空间相同、概率分布不同的概念

热门文章

  1. selenium实现bilibili模拟登录
  2. vue实现打印功能(vue-print-nb)
  3. 安卓系统的指纹解锁_安卓手机指纹解锁 手机指纹解锁怎么用 无良小偷的克星 好好玩...
  4. 迈创股份冲刺上交所:年营收11.2亿 小米与复星是股东
  5. 青龙羊毛之天问科技-7日打卡【微信小程序】
  6. pomotime_v1.7.2 番茄软件完全教程
  7. 易买网开发 趣买买 数据库的导入与数据库结构一览表 0605
  8. 想让零件随着模型变动而变形?“柔性零部件”了解一下
  9. 【C语言】文科普通211如何转行做开发
  10. Creating Entities (创建实体)