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

bulk批量导入

批量导入可以合并多个操作,比如index,delete,update,create等等。也可以帮助从一个索引导入到另一个索引。

语法大致如下;

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n

需要注意的是,每一条数据都由两行构成(delete除外),其他的命令比如index和create都是由元信息行和数据行组成,update比较特殊它的数据行可能是doc也可能是upsert或者script,如果不了解的朋友可以参考前面的update的翻译。

注意,每一行都是通过\n回车符来判断结束,因此如果你自己定义了json,千万不要使用回车符。不然_bulk命令会报错的!

一个小例子

比如我们现在有这样一个文件,data.json:

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }

它的第一行定义了_index,_type,_id等信息;第二行定义了字段的信息。

然后执行命令:

curl -XPOST localhost:9200/_bulk --data-binary @data.json

就可以看到已经导入进去数据了。

对于其他的index,delete,create,update等操作也可以参考下面的格式:

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} }
{ "doc" : {"field2" : "value2"} }

在Url中设置默认的index和type

如果在路径中设置了index或者type,那么在JSON中就不需要设置了。如果在JSON中设置,会覆盖掉路径中的配置。

比如上面的例子中,文件中定义了索引为test,类型为type1;而我们在路径中定义了默认的选项,索引为test333,类型为type333。执行命令后,发现文件中的配置会覆盖掉路径中的配置。这样也提供了统一的默认配置以及个性化的特殊配置的需求。

其他

由于bulk是一次性提交很多的命令,它会把这些数据都发送到一个节点,然后这个节点解析元数据(index或者type或者id之类的),然后分发给其他的节点的分片,进行操作。

由于很多命令执行后,统一的返回结果,因此数据量可能会比较大。这个时候如果使用的是chunk编码的方式,分段进行传输,可能会造成一定的延迟。因此还是对条件在客户端进行一定的缓冲,虽然bulk提供了批处理的方法,但是也不能给太大的压力!

最后要说一点的是,Bulk中的操作执行成功与否是不影响其他的操作的。而且也没有具体的参数统计,一次bulk操作,有多少成功多少失败。

扩展:在Logstash中,传输的机制其实就是bulk,只是他使用了Buffer,如果是服务器造成的访问延迟可能会采取重传,其他的失败就只丢弃了....

Elasticsearch —— bulk批量导入数据相关推荐

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

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

  2. bulk插入 es_Elasticsearch 使用bulk批量导入数据

    批量导入可以合并多个操作,比如index,delete,update,create等等.也可以帮助从一个索引导入到另一个索引. 语法大致如下: action_and_meta_data\n optio ...

  3. python批量导入网页信息_python批量导入数据进Elasticsearch的实例

    ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入.ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用. 先给代码 #coding=utf-8 from datet ...

  4. 怎么接收layui上传的文件_layui 上传文件_批量导入数据UI的方法

    使用layui的文件上传组件,可以方便的弹出文件上传界面. 效果如下: 点击[批量导入]按钮调用js脚本importData(config)就可以实现数据上传到服务器. 脚本: /*** * 批量导入 ...

  5. tp5大数据批量导入mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作

    LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...

  6. neo4j批量导入数据的两种解决方案

    neo4j批量导入数据的两种解决方案 参考文章: (1)neo4j批量导入数据的两种解决方案 (2)https://www.cnblogs.com/YoungF/p/11632488.html 备忘一 ...

  7. tp5 excel 导入 mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作

    LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...

  8. 使用python向Redis批量导入数据

    1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler):def connect(self): ...

  9. 批量导入数据到mssql数据库的

    概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...

最新文章

  1. Alibre Design 2018中文版
  2. Linux shell编程(二):shell语法
  3. 云端计算模型的MATLAB仿真与分析
  4. 最实用的logback讲解(1)
  5. Java 中,类、类对象、泛型之间的转换
  6. Android系统自带样式(android:theme)
  7. 对象中multipartfile 空报错_Python 为什么会有个奇怪的“...”对象?
  8. 统计学习方法-李航(4)
  9. php mb strlen 开启,php mb_strlen是什么函数
  10. java单链表基本操作 一,Java_实现单链表-基本操作
  11. Android Studio中导入第三方库
  12. centos7搭建nexus maven私服
  13. Atitit 提升水平 把代码写的有技术含量 目录 1. 提高可读性(重要) 2 1.1. 异常模式代替返回值 2 1.2. Dsl 2 1.3. 流畅接口方法链 2 1.4. 层次结构抽象 2 1
  14. 微软Hyper-V虚拟化技术全面体验
  15. 蓝桥杯备赛第一天-138译码器
  16. GMSK调制解调(一)
  17. 面试题:socket的流程
  18. 设置计算机屏幕保护程序,电脑屏保怎么设置?一键设置电脑屏幕保护方法
  19. 如何对Pandas DataFrame进行自定义排序
  20. 【拓展】谈谈字符编码:Unicode编码与emoji表情编码

热门文章

  1. 贪心算法求解背包问题
  2. spring注解之@Import注解的三种使用方式
  3. istio多集群链路追踪,附实操视频
  4. 环境搭建:Windows系统下Nacos集群搭建
  5. 关于OAuth2的几个问题
  6. 企业级SpringBoot教程(十一)springboot集成swagger2,构建Restful API
  7. 用sed和awk实现将文本中的上下两行合并为一行(转载)
  8. C++ 类的深拷贝和浅拷贝完美解决
  9. Discuz!X/缓存机制和使用方法
  10. android 添加桌面快捷方式