ElasticSearch(4)---Bulk批量操作
上一篇: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
,我们可以在curl
的URL
中指定/books/info,这样你仍然可以覆盖元数据行中的 _index 和 _type , 但是它将使用 URL 中的这些元数据值作为默认值:
POST /books/info
{"index":{"_id":"3"}} //创建新文档或者替换已用文档
{"name":"厚黑学","author":"李宗吾","price":"50"} //请求体
下一篇:ElasticSearch(5)—Head插件
ElasticSearch(4)---Bulk批量操作相关推荐
- ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)
ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...
- elasticsearch使用bulk实现批量操作
本篇文章提供ES原生批量操作语法及使用bulk批量操作文档.文章依旧提供语法,具体实现大家根据语法,在对应处进行替换即可 一.原生批量获取文档 1.获取指定文档值(1) 语法: GET /_mget ...
- ElasticSearch基础之批量操作(mget+mbulk)
在前面的演示中,我们都是基于一次http查询,每次查询都要建立http的三次握手请求,这样比较耗费性能!因此ES给我们提供了基本的批量查询功能,例如如下的查询,注意里面的index是可以任意指明的 ...
- Elasticsearch的bulk用法(python)
这篇文章介绍Elasticsearch的bulk在Python中的用法,bulk API可以在单个请求中一次执行多个操作(index,udpate,create,delete),使用这种方式可以极大的 ...
- python elasticsearch bulk_Elasticsearch之批量操作bulk
1.bulk相当于数据库里的bash操作. 2.引入批量操作bulk,提高工作效率,你想啊,一批一批添加与一条一条添加,谁快? 3.bulk API可以帮助我们同时执行多个请求 4.bulk的格式: ...
- Elasticsearch--入门-删除数据bulk批量操作导入样本测试数据---全文检索引擎ElasticSearch工作笔记008
3 然后我们再去看在es中怎么用,restapi去删除数据 可以看到上面提供两种方式 DELETE customer/external/1 这个是删除customer这个索引下的external这个类 ...
- Bulk批量操作API的介绍
#多重模式 #批量操作bulk POST /library/books/_bulk {"index": {"_id": 1}} {"title&quo ...
- 导入json数据到Elasticsearch(bulk方法)
一.前言 在前面几章,基本把本地的环境给配置好了,那么配置好了之后,要做的第一件事当然就是导入数据进去.我这边准备的是一份json数据,这里通过ES的bulk API给导入进去. 二.导入数据 1.批 ...
- python elasticsearch bulk_Elasticsearch —— bulk批量导入数据
在使用Elasticsearch的时候,一定会遇到这种场景--希望批量的导入数据,而不是一条一条的手动导入.那么此时,就一定会需要bulk命令! 更多内容参考我整理的Elk教程 bulk批量导入 批量 ...
最新文章
- 黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...
- c语言数组的一维编程,【C语言】转换一维数组
- 外联css及js的使用
- Windows server 2003/2008更改远程桌面端口脚本
- Lua直接调用动态链接库(DLL或so文件)
- Linq中的Where与SkipWhile
- python观察日志(part15)--命名元祖namedtuple
- passive模式 tcp_FTP主动模式和被动模式的比较
- Job 存储和持久化 (第四部分)
- SQL ---- 查询字段为逗号拼接的字符串
- 2019小程序没必要做了_企业发展小程序的必要原因
- 力扣——在排序数组中查找元素的第一个和最后一个位置
- 翻译: 4.4. 模型选择Model Selection、欠拟合Underfitting和过拟合Overfitting pytorch
- iOS7以上: 实现如“日历”的 NavigationBar
- 2017北航计算机系学硕最低录取分,2018北航计算机考研初试经验帖
- Linux相关命令(三)
- Robotic KDL library
- maya 中的 cmds.scriptJob 命令
- matlab将图片旋转的代码_论文写作经验分享word+mathtype+matlab
- 【迁移学习】特征空间相同、概率分布不同的概念
热门文章
- selenium实现bilibili模拟登录
- vue实现打印功能(vue-print-nb)
- 安卓系统的指纹解锁_安卓手机指纹解锁 手机指纹解锁怎么用 无良小偷的克星 好好玩...
- 迈创股份冲刺上交所:年营收11.2亿 小米与复星是股东
- 青龙羊毛之天问科技-7日打卡【微信小程序】
- pomotime_v1.7.2 番茄软件完全教程
- 易买网开发 趣买买 数据库的导入与数据库结构一览表 0605
- 想让零件随着模型变动而变形?“柔性零部件”了解一下
- 【C语言】文科普通211如何转行做开发
- Creating Entities (创建实体)