dump数据
- 安装elasticsearch-dump的镜像
docker pull taskrabbit/elasticsearch-dump - 编辑保存如下bash脚本,保存为dumpEs.sh
if [ "$#" -ne 6 ]; then
echo "Usage: $0 USERNAME PASSWORD ES_IP ES_PORT LOCAL_PATH INDEX_NAMES"
exit 1
fi
USERNAME=$1
PASSWORD=$2
ES_IP=$3
ES_PORT=$4
LOCAL_PATH=$5
IFS=',' read -ra INDEX_NAMES <<< "$6"
for i in "${INDEX_NAMES[@]}"; do
echo "Running elasticsearch-dump for index: $i"
docker run --rm -ti -v $LOCAL_PATH:/tmp taskrabbit/elasticsearch-dump \
--input=http://$USERNAME:$PASSWORD@$ES_IP:$ES_PORT/$i \
--output=/tmp/{$i}_mapping.json \
--type=template
docker run --rm -ti -v $LOCAL_PATH:/tmp taskrabbit/elasticsearch-dump \
--input=http://$USERNAME:$PASSWORD@$ES_IP:$ES_PORT/$i \
--output=/tmp/$i.json \
--type=data \
--limit=2000
done
- 执行命令(替换大写的变量)
bash dumpEs.sh ES_USERNAME ES_PASSWORD ES_IP ES_PORT LOCALPATH "user,vehicle"
- 打包保存mapping和数据
tar -xzvf es_data.tar.gz LOCALPATH
导入数据
- 将如下bash脚本保存为importEsData.sh
#!/bin/bash
if [ "$#" -ne 6 ]; then
echo "Usage: $0 USERNAME PASSWORD ES_IP ES_PORT LOCAL_PATH INDEX_NAMES"
exit 1
fi
USERNAME=$1
PASSWORD=$2
ES_IP=$3
ES_PORT=$4
LOCAL_PATH=$5
IFS=',' read -ra INDEX_NAMES <<< "$6"
for i in "${INDEX_NAMES[@]}"; do
echo "Running elasticsearch-import for index: $i"
docker run --rm -ti -v $LOCAL_PATH:/tmp taskrabbit/elasticsearch-dump \
--output=http://$USERNAME:$PASSWORD@$ES_IP:$ES_PORT/$i \
--input=/tmp/mapping_$i.json \
--type=template
docker run --rm -ti -v $LOCAL_PATH:/tmp taskrabbit/elasticsearch-dump \
--output=http://$USERNAME:$PASSWORD@$ES_IP:$ES_PORT/$i \
--input=/tmp/$i.json \
--type=data \
--limit=2000
done
- 将es_data.tar.gz文件解压至/data 文件夹下
- 执行bash脚本,注意替换变量(LOCALPATH是数据放的地址,/data/dump)
bash importEsData.sh ES_USERNAME ES_PASSWORD ES_IP ES_PORT LOCALPATH "alarm_detail"