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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LJFPHP/article/details/89362012

一、前言

      ES的备份,导入和导出相对而言比较麻烦。用logstash的话,经常会出现很多错误,而且不是很方便。用bulk也是一样的,对于咱们的json文件的结构,一些字段名都有要求,也不方便。后来和大佬交流下才知道,原来ES也有类似于MySQLmysqldump工具,这里要说的插件是elasticdump

导入json数据到Elasticsearch(bulk方法)
logstash导入数据到Elasticsearch

二、正文

前提: 插件使用npm安装,所以先保证本地安装有node环境,且版本要大于v8,尽量高一点就行。linux下的安装参考文档,这里只介绍windows下的安装

1、windows下安装

(1)新建文件夹elasticdump
(2)执行npm install
(3)执行 npm install elasticdump -g
(4)提示

D:\soft\node\elasticdump -> D:\soft\node\node_modules\elasticdump\bin\elasticdump
D:\soft\node\multielasticdump -> D:\soft\node\node_modules\elasticdump\bin\multielasticdump
+ [email protected]

2、导入数据到ES
(1)导入

elasticdump --input E:/files/es_zeusa.evony.com.accesslog/zeusa.evony.com.accesslog-2019.03.28.json --output "http://localhost:9200/zeusa.evony.com.accesslog-2019.03.28"
Wed, 17 Apr 2019 02:14:31 GMT | starting dump
Wed, 17 Apr 2019 02:14:31 GMT | got 100 objects from source file (offset: 0)
Wed, 17 Apr 2019 02:14:32 GMT | sent 100 objects to destination elasticsearch, wrote 100
Wed, 17 Apr 2019 02:14:58 GMT | Total Writes: 17041
Wed, 17 Apr 2019 02:14:58 GMT | dump complete

我这边的索引没有提前建好,只是在output中命名了一下,是它自己创建的。这里看到已经导入成功了,速度挺快的
(2)导出

elasticdump --input http://localhost:9200/zeusa.evony.com.accesslog-2019.03.28 --output  E:/files/es_zeusa.evony.com.accesslog/zeusa.evony.com.accesslog-2019.03.28.json

导入导出都差不多,input和output互换一下内容即可

三、优缺点

优点:
(1)同一份文档,用logstash导入,会报错:

Field [_type] is a metadata field and cannot be added inside a document. Use the index API request parameters.

但是用es-dump工具就不会报错。因为logstash对于导入数据的格式,命名要求更严谨一些,不允许导入的数据用ES的关键字命名。而es-dump不用担心这个
(2)导入速度方面也很快,至少在我本地导入的时候,比logstash
(3)轻量级,易上手
缺点:
(1)只是比较简单的工具,没有logstash的过滤功能

最后: 还有很多功能,请参考github上的文档,这里仅作为导入导出文件的工具使用。github官方文档:https://github.com/taskrabbit/elasticsearch-dump

end

猜你喜欢

转载自blog.csdn.net/LJFPHP/article/details/89362012