elasticdump导出es数据

elasticdump可以直接下载es中得数据,需要通过npm方式安装下载elasticdump,所以需要先安装nodejs

1. 安装nodejs

将该文件上传到服务器中,或直接使用wget方式下载nodejs;切换到你得下载目录中,然后进行解压:

[root@localhost ~]# tar -xvf node-v10.16.0-linux-x64.tar.xz

 使用命令解压文件后,然后mv到想要的目录中去,不用进行安装,将node下的bin目录配置到/etc/profile中即可,在/etc/profile中最后一行添加

export PATH=$PATH:xxx_node_home_dir/bin

然后source /etc/profile即可,输入命令进行查看node和npm是否安装成功

node -v
npm -v

这种方式是在/etc/profile配置目录方式,从而可以使用node或npm方式,也可以使用软连接,如下所示,效果也差不多(在我这里测试的时候,如果使用软链接方式,全局安装elasticdump后会出现找不到命令的情况,而使用HOME目录方式就不会存在该问题,推荐HOME目录配置方式)

[root@localhost ~]# ln -s ~/node-v10.16.0-linux-x64/bin/node /usr/bin/node
[root@localhost ~]# ln -s ~/node-v10.16.0-linux-x64/bin/npm /usr/bin/npm

2. 下载ealsticdump

[root@localhost ~]# npm install elasticdump -g

 这种方式安装后,可以全局使用,如果在其他目录中,使用下面命令,如果提示没有安装xxx命令的话, 那就使npm本地安装模式,npm install elasticdump 安装完成后,切换到本地`node_modules/elasticdump/` 目录下,通过bin/elasticdump同样可以使用命令

[root@localhost ~]# elasticdump

3. 下载数据示例

bin/elasticdump --input=http://127.0.0.1:9200/test_index \
--output=./test_index.json --type=data --sourceOnly=true \
--fileSize=512mb --retryAttempts=3 \
--searchBody='{"query":{"bool":{"must":[{"range":{"@timestamp":{"gte":"2021-06-01","lt":"2021-07-01"}}},{"term":{"project.keyword":{"value":"xxxx"}}}]}}}'

示例说明:

--type可以不要,默认就是data,可以设置为mapping和其他,表示要下载的数据

--sourceOnly,默认值为false,正常的数据中,是包含一些_id, _score,_source,_index等信息,如果设置为true,只会把_source中的数据下载回来;

--fileSize设置文件滚动大小

--retryAttempt设置失败重试次数

--searchBody设置你的查询条件

上面示例中,除了--input和--output以外,其他都可以不进行设置,示例的下载过程如下

 

 elasticdump还有很多的参数可以设置,其可以导出,也可以导入,更多信息通过命令进行查看

bin/elasticdump --help

 

 

 

posted @ 2022-03-25 19:06  理舞  阅读(1457)  评论(0编辑  收藏  举报