Elaticsearch的原理明白了以后,手头有很多不同类型的数据,如: 
1)单条数据,如程序中自己构造的JSON格式数据; 
2)符合Elasticsearch索引规范的批量数据; 
3)日志文件,格式*.log; 
4)结构化数据,存储在mysql、oracle等关系型数据库中; 
5)非结构化数据,存储在mongo中; 
如何将这些数据导入到Elasticsearch中呢?接下来,本文将逐个介绍。

1、单条索引导入elasticsearch

该方法类似mysql的insert 语句,用于插入一条数据。

[root@yang json_input]# curl -XPUT 'http://192.168.1.1:9200/blog/article/1' -d '
> {
> "title":"New version of Elasticsearch released!",
> "content":"Version 1.0 released today!",
> "tags":["announce","elasticsearch","release"]
> }'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果查看如下所示:

[root@yang json_input]# curl -XGET 'http://192.168.1.1:9200/blog/article/1?pretty'
{"_index" : "blog","_type" : "article","_id" : "1","_version" : 1,"found" : true,"_source" : {"title" : "New version of Elasticsearch released!","content" : "Version 1.0 released today!","tags" : [ "announce", "elasticsearch", "release" ]}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

图形化显示如下: 

2、批量索引导入到 elasticsearch。

(1)索引结构映射

类似于SQL创建模式描述数据,Mapping控制并定义结构。

[root@yang json_input]# cat mapping.json
{
"book" : {
"_all": {
"enabled": false
},
"properties" : {
"author" : {
"type" : "string"
},
"characters" : {
"type" : "string"
},
"copies" : {
"type" : "long",
"ignore_malformed" : false
},
"otitle" : {
"type" : "string"
},
"tags" : {
"type" : "string"
},
"title" : {
"type" : "string"
},
"year" : {
"type" : "long",
"ignore_malformed" : false,
"index" : "analyzed"
},
"available" : {
"type" : "boolean"
}
}
}
}
[root@yang json_input]# curl -XPUT 'http://110.0.11.120:9200/library/book/_mapping' -d @mapping.json
{"acknowledged":true}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

(2)批量索引,将构造好的JSON信息和数据导入elasticsearch

Elasticsearch可以合并多个请求至单个包中,而这些包可以单个请求的形式传送。如此,可以将多个操作结合起来:

1)在索引中增加或更换现有文档(index); 
2)从索引中移除文档(delete); 
3)当索引中不存在其他文档定义时,在索引中增加新文档(create)。

为了获得较高的处理效率,选择这样的请求格式。它假定,请求的每一行包含描述操作说明的JSON对象,第二行为JSON对象本身。

可以把第一行看做信息行,第二行行为数据行。唯一的例外是Delete操作,它只包含信息行。

举例如下:

[root@yang json_input]# cat documents_03.json
{ "index": {"_index": "library", "_type": "book", "_id": "1"}}
{ "title": "All Quiet on the Western Front","otitle": "Im Westen nichts Neues","author": "Erich Maria Remarque","year": 1929,"characters": ["Paul Bäumer", "Albert Kropp", "Haie Westhus", "Fredrich Müller", "Stanislaus Katczinsky", "Tjaden"],"tags": ["novel"],"copies": 1, "available": true, "section" : 3}
{ "index": {"_index": "library", "_type": "book", "_id": "2"}}
{ "title": "Catch-22","author": "Joseph Heller","year": 1961,"characters": ["John Yossarian", "Captain Aardvark", "Chaplain Tappman", "Colonel Cathcart", "Doctor Daneeka"],"tags": ["novel"],"copies": 6, "available" : false, "section" : 1}
{ "index": {"_index": "library", "_type": "book", "_id": "3"}}
{ "title": "The Complete Sherlock Holmes","author": "Arthur Conan Doyle","year": 1936,"characters": ["Sherlock Holmes","Dr. Watson", "G. Lestrade"],"tags": [],"copies": 0, "available" : false, "section" : 12}
{ "index": {"_index": "library", "_type": "book", "_id": "4"}}
{ "title": "Crime and Punishment","otitle": "Преступлéние и наказáние","author": "Fyodor Dostoevsky","year": 1886,"characters": ["Raskolnikov", "Sofia Semyonovna Marmeladova"],"tags": [],"copies": 0, "available" : true}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

为了执行批量请求,Elasticsearch提供了_bulk端点,形式是/_bulk,或者是/index_name/_bulk, 甚至是/index_name/type_name/_bulk。

Elasticsearch会返回每个操作的具体的信息,因此对于大批量的请求,响应也是巨大的。

3)执行结果如下所示:

[root@yang json_input]# curl -s -XPOST '10.0.1.30:9200/_bulk' --data-binary @documents_03.json
{"took":150,"errors":false,"items":[{"index":{"_index":"library","_type":"book","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"index":{"_index":"library","_type":"book","_id":"2","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"index":{"_index":"library","_type":"book","_id":"3","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"index":{"_index":"library","_type":"book","_id":"4","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}}]}
  • 1
  • 2

执行结果如下图所示: 

3、使用Logstash将 log文件导入elasticsearch

以下以项目实战的 MprobeDebug.log导入到ES中。

[root@yang logstash_conf]# tail -f MrobeDebug.log
[DEBUG][2015-07-23 23:59:58,138] : After CurProbe.Update()....lineNo:233, function:main
[DEBUG][2015-07-23 23:59:58,594] : lineNo:960, function:MNetworker::MessageTranslator, revoke nMsgRes = m_MsgPool.PeekMessage(CurMsg);
[DEBUG][2015-07-23 23:59:58,608] : ProbeTaskType_FTP lineNo:148, function:TempProbe::Update
........
  • 1
  • 2
  • 3
  • 4
  • 5

核心配置文件要求如下:

[root@yang logstash_conf]# cat three.conf
input {
file {
path=> "/opt/logstash/bin/logstash_conf/MrobeDebug.log"
type=>"ttlog"
}
}output {
elasticsearch {
hosts => "110.10.11.120:9200"
index => "tt_index"
}
stdout { codec => json_lines }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

导入结果如下: 
合计导入数据:200414条。 

4、从Mysql/Oracle关系型数据库向Elasticsearch导入数据

参见: 
http://blog.csdn.net/laoyang360/article/details/51747266 
http://blog.csdn.net/laoyang360/article/details/51824617

5、从MongoDB非关系型数据库向Elasticsearch导入数据

参见: 
http://blog.csdn.net/laoyang360/article/details/51842822

使用插件:mongo-connector 
1)mongo与副本集成员连接 
2)初始化副本集配置 
3)Mongo与ES同步操作

如何将不同类型数据导入Elaticsearch中?相关推荐

  1. matlab导入数据作图,如何将excel表格中大量数据导入matlab中并作图:excel表格数据制图软件...

    是否有能替代Excel作图表的软件? 我认为数据观你可以试试,因为它提供多种可视化图表,涵盖所有excel提供的图形,您可以进行任何个性化设置. 将excel数据制作成漂亮图表的软件?做图表用什么软件 ...

  2. MySQL数据库数据导入ES中

    需要安装 mysql数据导入ES中,用到的有logstash,ES,mysql的连接包.链接:https://pan.baidu.com/s/1xopMMUtPir12zrQfYcwBZg  提取码: ...

  3. openrowset excel 科学计数_txt的数据导入excel中身份证或银行卡显示成科学计数如何解决...

    用excel自带的"数据"->"自文本"将txt的数据导入excel中,如果数字特别长比如身份证或者银行卡会显示成科学计数法,如下: 借助sqlcel我们 ...

  4. matlab打开矩阵表,如何将Excel数据导入MATLAB中?:EXCLE中通过矩阵表输出选项

    怎么把matlab中处理的数据存入到excel中 可以直接xlswrite命令. data=randn(100,1); % data为需要存储的数 xlswrite('D:\write2Excel.x ...

  5. mysql rrd_将RRD数据库中数据导入MYSQL中

    一.RRD数据库及RRDTOOL简介 意为Round Robin Database.设计理念为按照round-robin的方式进行存储,在一个周期之后(可自己定义),新的数据会覆盖掉原来的数据.所以R ...

  6. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

  7. 如何将excel表格导入matlab,将Excel数据导入MATLAB中的方法

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.那么下面小编教你怎么将Excel数据导入MATLAB中. 将 ...

  8. 将一个Excel中的数据导入DataGrid中

    第一步: 获取计算机中的一个Excel文件利用File Field控件和Javascrip脚本 File Field控件ID:DocUpload <INPUT id="DocUploa ...

  9. matlab读取excel表作图,读取Excel表格数据进行绘图-如何将excel表格中大量数据导入matlab中并作图...

    matlab 读取excel时间数据并绘图 没看懂你的格式是什么意思, 不过我一般读取excel都用xlsread函数,你也可以试一试 [a,b,c]=xlsresd('data.xls');%r如果 ...

最新文章

  1. [转]为什么我要用 Node.js? 案例逐一介绍
  2. CF982 C Cut 'em all!【树/DFS/思维】
  3. linux文件夹多个空格,linux-在“ for”循环中读取带有空格,带有多个输入文件的制表符的完整行...
  4. python有多少种模块_python如何查看有哪些模块
  5. Spring整合Redis详解
  6. 安装openfst 和 threx的经过
  7. 51nod1255【贪心-栈的应用】
  8. iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条...
  9. AWT_Swing_初始化(Java)
  10. 干货:手把手教你在音频分类DCASE2017比赛中夺冠
  11. python数值运算代码_Python数值
  12. 倒立摆源代码仿真matlab/simulink神经网络PID(模糊)控制校正LQR 神经网络 倒立摆控制 倒立摆LQR控制仿真 单级倒立摆的模糊控制 旋转倒立摆
  13. 大学python笔记整理_python 笔记整理
  14. 比PS简单N倍的抠图神器,效果还不错~
  15. php中的gd图像处理,PHP图像处理(GD库)
  16. es入门以及索引原理学习
  17. 人力资源管理-各类激励理论
  18. 分数阶的预估校正算法及实现
  19. 6-1 另类循环队列 (30 分) 如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。
  20. 微信账号和语音文件的结构分析

热门文章

  1. myisam怎么读_耗时半年,我成功“逆袭”,拿下美团offer(刷面试题+读源码+项目准备)...
  2. Linux小实验——设备挂载、磁盘分区、格式化、RAID的配置、LVM配置、磁盘配额的配置方法和验证
  3. JSP中动态添加 “添加附件选择框”
  4. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
  5. qt 最小化到托盘linux,Qt窗口最小化到托盘,托盘菜单控制
  6. linux装完windows时间长,重装Windows 10上的Linux子系统
  7. 如何用计算机组添加打印机共享的打印机,工作组内打印机如何共享?
  8. 程序填充(指针):3数排序_排序算法之快速排序,它为什么这么快?
  9. centos7 mysql 1064_【mysql报错】1064 - You have an error in your SQL syntax;
  10. 网站域名过户查询_网站建设哪家好?网站建设怎么收费?