一、前言

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

二、导入数据

1、批量导入的话使用bulk API,形如:

curl -H "Content-Type: application/x-ndjson"  -s -XPOST "localhost:9200/_bulk?pretty&refresh" --data-binary "@E:\files\es_zeusa.evony.com.accesslog\test.json"

我这里没有明确指定indextype的值,因为我的数据中已经包含indextype,所以不在url中指定也可以。指定的话,格式是:

{index}/{type}/_bulk
pretty:pretty是将返回的信息以可读的JSON形式返回

2、报错

"error" : {
"root_cause" : [{"type" : "illegal_argument_exception","reason" : "Malformed action/metadata line [1], expected START_OBJECT or END_OBJECT but found [VALUE_STRING]"}

百度了一下,说是导入的json数据没有id的问题,但问题是,我有id的。导入的js文件类似于:

{"_index":"xxx","_type":"doc","_id":"OCCZwwB18T8lllql35ykE","_score":1,"_source":{"fields":{"service":"zeusa.evony.com.accesslog"}}

有id的,只不过这个id不是自增长的id,是ES自动生成的id,没道理啊。

3、参照bulk的文档:

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html

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

这是标准格式,action可以是indexcreatedelete,和update
option是相关参数属性

修改格式形如:

{"index":{"_index":"xxx","_type":"doc","_id":"OCCxxxxxxxxxxxx5ykE"}}
{"doc":{"_score":1,"_source":{"fields":{"service":"xxxx"}}

百度一下,看到很多人导入的格式是类似于这样的,给json文件一个顶级对象,严格安装bulk API的要求。

4、继续导入,报错:

 "error" : {
"root_cause" : [{"type" : "illegal_argument_exception","reason" : "The bulk request must be terminated by a newline [\n]"}
]}

这个错误比较明显,是没加换行符。需要在json文件的结尾加个换行符,也就是按一下enter,切换到下一行。重新输入:

"took" : 114,"errors" : false,"items" : [{"index" : {"_index" : "xxx","_type" : "doc","_id" : "xxxx","_version" : 3,"result" : "updated","forced_refresh" : true,"_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 3,"_primary_term" : 1,"status" : 200    }}]

导入成功。这里注意下status的值,第一次插入的时候,显示status201,不过还是可以查询到已经导入的数据。第二次导入的时候,因为已经存在这个数据了,所以status200。这里可以看到我的version3,代表我这是第三次导入了,纯粹为了测试,哈哈。

需要注意的是,bulk导入数据量是有限的,貌似是100M是默认的上限,所以对于大数据量来说,使用logstash导入更为合适(这里不讨论filebeat相关,仅为引出下一篇文章),因此下一篇将介绍使用logstash导入大量数据,以避免再遇到这种错误情况。
链接: logstash导入数据到Elasticsearch

end

导入json数据到Elasticsearch(bulk方法)相关推荐

  1. windows下用elasticdump导入json数据到Elasticsearch中

    一.前言 ES的备份,导入和导出相对而言比较麻烦.用logstash的话,经常会出现很多错误,而且不是很方便.用bulk也是一样的,对于咱们的json文件的结构,一些字段名都有要求,也不方便.后来和大 ...

  2. txt 导入 mysql python_Python导入txt数据到mysql的方法

    本文实例讲述了Python导入txt数据到mysql的方法.分享给大家供大家参考.具体分析如下: 从TXT文本转换数据到MYSQL数据库,接触一段时间python了 第一次写东西 用的是Python2 ...

  3. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  4. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  5. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  7. python怎么导入txt数据库_Python导入txt数据到mysql的方法

    本文实例讲述了Python导入txt数据到mysql的方法.分享给大家供大家参考.具体分析如下: 从TXT文本转换数据到MYSQL数据库,接触一段时间python了 第一次写东西 用的是Python2 ...

  8. java构建json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  9. React导入json数据

    本文提供两种方式,读者根据自己的需要进行选择. 1.第一种方式:直接import json文件. 这种方式依赖于 json-loader模块(npm install json-loader, http ...

最新文章

  1. 服务器拒绝连接(The remote system refused the connection.)
  2. java 拉姆表达式_Java8 lambda表达式10个示例
  3. 前端学习(2528):一个简单的vue app
  4. osg指定向量旋转指定角度
  5. 翻译:重载解决和Null
  6. Theano 编程核心
  7. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
  8. 剑指offer--两个链表的第一个公共结点
  9. matlab做班级抽签,matlab抽签程序(含源码)
  10. 基于华为云ModelArts(实现垃圾分类识别)
  11. OpenGL学习(1)
  12. 用计算机时的注意事项,计算机使用注意事项
  13. 通往测试架构师之路(1):那些家伙在干什么?
  14. HttpClient 爬取百度图片
  15. 中国高端制造进展神速,又一项新科技产品即将取得全球第一!
  16. 计算机系统中时间周期的单位,时间单位换算 (全),计算机单位换算大全
  17. 莎士比亚文集词频统计并行化算法
  18. 同济大学计算机硕士生能拿到户口,上海这4所大学的应届生,毕业可直接“落户”,考生有福了...
  19. 国内主流平台QMT和Ptrade哪个软件更好用?应该怎么选择?
  20. 假如生活欺骗了你 (俄)普希金

热门文章

  1. java语法结构是什么意思_java - 基础 - 语法结构
  2. golang mysql自动重连_rabbitmq消费者插入mysql数据并实现断线自动重连
  3. python eve mysql_python连接 MySQ 数据库
  4. windows 安装python-pcl 测试ok
  5. ASVL_PAF_RGB24_B8G8R8 格式转换
  6. eltwise_layer.cpp:170: error: (-215:Assertion failed) inputs.size() = 2 in function 'cv::dnn::Eltwi
  7. ERROR: tensorboard 1.14.0 has requirement setuptools=41.0.0, but you'll have setuptools 39.1.0 whic
  8. pytorch多进程加载数据
  9. mseloss 与 smooth_l1_loss比较
  10. python array笔记