专业的编程技术博客社区

网站首页 > 博客文章 正文

基于elasticdump实现es数据导入导出

baijin 2024-08-10 13:34:24 博客文章 26 ℃ 0 评论

概述

elaelasticdump 同时具有从一个索引导出至另一个索引,通过Query DSL(ES查询语法)导出数据(不支持折叠)等一些强大的功能特性。

下面简单介绍一下它的一些用法。


1、基于docker安装elasticdump

1.1、安装docker

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all && yum makecache
-- 安装docker
yum install docker-ce docker-ce-cli containerd.io -y
-- 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
--启动docker服务
systemctl start docker
systemctl enable docker
systemctl status docker


1.2、安装esdump

docker pull taskrabbit/elasticsearch-dump



2、elasticdump 使用

elasticdump提供了多种导入导出数据的方式,可以 index <-> index 、 index <-> .json 文件,还支持将 index 查询结果导出到 .json 文件。执行的命令也很简单,只需指定数据来源 input 、数据输出 output 、数据类型 type 即可。

2.1 支持导入导出的type列表


2.2、es数据的导入导出

2.2.1 导入导出命令

-- 导出数据到 .json 文件:
// 导出 index 的 mapping 到 .json 文件
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index_mapping.json \
  --type=mapping
// 导出 index 的所有数据到 .json 文件
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index.json \
  --type=data

-- 从.json文件导入数据
// 从 .json 文件导入 templates 到 ES 
elasticdump \
  --input=./templates.json \
  --output=http://es.com:9200 \
  --type=template


2.2.2 导入导出示例

1)导出 index 数据到 .json 文件

--查看索引
curl http://xxx:9200/_cat/indices?v
mkdir -p /opt/elasticsearch/data
docker run --rm -ti -v /opt/elasticsearch/data:/tmp taskrabbit/elasticsearch-dump \
--input=http://xx.143:9200/fsl_sit.ocs-2020.09.21-000119 \
--output=/tmp/ocs_index.json \
--type=data

查看索引

导出结果:

2)清空es index 数据

curl -X POST \
  'http://xx.143:9200/fsl_sit.ocs-2020.09.21-000119/_delete_by_query?refresh=&slices=100&pretty=true' \
  -H 'Content-Type: application/json' \
  -d '{ "query": { "match_all": {} } }'

3)导入 .json 文件中的数据到 es

docker run --rm -ti -v /opt/elasticsearch/data:/tmp taskrabbit/elasticsearch-dump \
--input=/tmp/ocs_index.json \
--output=http://xx143:9200/fsl_sit.ocs-2020.09.21-000119  \
--type=data

执行结果:



后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表