导入json数据到Elasticsearch(bulk方法)
一、前言
在前面几章,基本把本地的环境给配置好了,那么配置好了之后,要做的第一件事当然就是导入数据进去。我这边准备的是一份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"
我这里没有明确指定index
和type
的值,因为我的数据中已经包含index
和type
,所以不在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
可以是index
,create
,delete
,和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
的值,第一次插入的时候,显示status
是201
,不过还是可以查询到已经导入的数据。第二次导入的时候,因为已经存在这个数据了,所以status
是200
。这里可以看到我的version
是3
,代表我这是第三次导入了,纯粹为了测试,哈哈。
需要注意的是,bulk
导入数据量是有限的,貌似是100M
是默认的上限,所以对于大数据量来说,使用logstash
导入更为合适(这里不讨论filebeat
相关,仅为引出下一篇文章),因此下一篇将介绍使用logstash
导入大量数据,以避免再遇到这种错误情况。
链接: logstash导入数据到Elasticsearch
end
导入json数据到Elasticsearch(bulk方法)相关推荐
- windows下用elasticdump导入json数据到Elasticsearch中
一.前言 ES的备份,导入和导出相对而言比较麻烦.用logstash的话,经常会出现很多错误,而且不是很方便.用bulk也是一样的,对于咱们的json文件的结构,一些字段名都有要求,也不方便.后来和大 ...
- txt 导入 mysql python_Python导入txt数据到mysql的方法
本文实例讲述了Python导入txt数据到mysql的方法.分享给大家供大家参考.具体分析如下: 从TXT文本转换数据到MYSQL数据库,接触一段时间python了 第一次写东西 用的是Python2 ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- python csv库,Python 中导入csv数据的三种方法
Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- python怎么导入txt数据库_Python导入txt数据到mysql的方法
本文实例讲述了Python导入txt数据到mysql的方法.分享给大家供大家参考.具体分析如下: 从TXT文本转换数据到MYSQL数据库,接触一段时间python了 第一次写东西 用的是Python2 ...
- java构建json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- React导入json数据
本文提供两种方式,读者根据自己的需要进行选择. 1.第一种方式:直接import json文件. 这种方式依赖于 json-loader模块(npm install json-loader, http ...
最新文章
- 服务器拒绝连接(The remote system refused the connection.)
- java 拉姆表达式_Java8 lambda表达式10个示例
- 前端学习(2528):一个简单的vue app
- osg指定向量旋转指定角度
- 翻译:重载解决和Null
- Theano 编程核心
- 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
- 剑指offer--两个链表的第一个公共结点
- matlab做班级抽签,matlab抽签程序(含源码)
- 基于华为云ModelArts(实现垃圾分类识别)
- OpenGL学习(1)
- 用计算机时的注意事项,计算机使用注意事项
- 通往测试架构师之路(1):那些家伙在干什么?
- HttpClient 爬取百度图片
- 中国高端制造进展神速,又一项新科技产品即将取得全球第一!
- 计算机系统中时间周期的单位,时间单位换算 (全),计算机单位换算大全
- 莎士比亚文集词频统计并行化算法
- 同济大学计算机硕士生能拿到户口,上海这4所大学的应届生,毕业可直接“落户”,考生有福了...
- 国内主流平台QMT和Ptrade哪个软件更好用?应该怎么选择?
- 假如生活欺骗了你 (俄)普希金
热门文章
- java语法结构是什么意思_java - 基础 - 语法结构
- golang mysql自动重连_rabbitmq消费者插入mysql数据并实现断线自动重连
- python eve mysql_python连接 MySQ 数据库
- windows 安装python-pcl 测试ok
- ASVL_PAF_RGB24_B8G8R8 格式转换
- eltwise_layer.cpp:170: error: (-215:Assertion failed) inputs.size() = 2 in function 'cv::dnn::Eltwi
- ERROR: tensorboard 1.14.0 has requirement setuptools=41.0.0, but you'll have setuptools 39.1.0 whic
- pytorch多进程加载数据
- mseloss 与 smooth_l1_loss比较
- python array笔记