方式1. reindex (适用于单一集群或多集群同网络)
方式2. 中间使用esm迁移
2.1(方式1 网络隔离)
2.1.1 原始集群 es001---->download------>local------->upload------>oss
2.1.1 目标集群 oss------>download------>local------->es002
2.2(方式2 网络连通)
2.2.1 create index(避免一些问题)
2.2.2 esm导入数据
方式1
1.索引快照
_reindex新索引 bak_index_001
2.下载数据
./esm -s $host -x $index -c 5000--sort=id --refresh -o=$local_file_path
3.上传数据oss\压缩
gzip -d *
4.目标机器下载oss
5.如有必要拆分(机器资源限制比如只有16G)
split -l 130000 esm_a.json.json local_file_path_split_
6.写入目标集群
for i in `ls tmp_private/local_file_path_split_*`;
do
private_path="./$i"
echo $target_host
echo $target_index
echo $private_path
./esm -d $target_host -y $target_index -c 500 -b 1 --refresh -i=$private_path
done
7.验证
1.原始集群获取索引结构
for idx in `curl "$src_host/_cat/indices?h=index"`;
do
echo "$idx"
mkdir -p es/es001
curl $src_host/$idx > es/es001/$idx.txt
done
2.解析数据并且创建索引
yum install epel-release
yum install jq
des_host=""
for file in `ls`;
do
echo $file
i=`echo $file|cut -d "." -f 1`
echo $i
cmd="jq 'del(.$i.settings.index.uuid,.$i.settings.index.version,.$i.settings.index.provided_name,.$i.settings.index.creation_date)' $file"
echo $cmd
js=`bash -c "$cmd"|jq -c .$i`
cmd2="curl -H 'Content-Type: application/json' -XPUT $des_host/$i -d '$js'"
echo $cmd2
#bash -c "$cmd2"
done
3.导入目标数据、验证
for file in `ls *.txt`;
do
echo $file
i=`echo $file|cut -d "." -f 1`
echo $i
cmd="jq --arg iii $i 'del(.[$iii].settings.index.uuid,.[$iii].settings.index.version,.[$iii].settings.index.provided_name,.[$iii].settings.index.creation_date)' $file"
js=`bash -c "$cmd"|jq --arg iii $i -c .[$iii]`
cmd2="curl -H 'Content-Type: application/json' -XPUT $des_host/$i -d '$js'"
echo $cmd2 >>ares_curl.index
#bash -c "$cmd2"
done
--------------A
./esm -s $src_host -x $index -d $target_host -y $index -c 1000 -b 1 --sort=id --refresh
--------------B
./esm -s $src_host -x $index -c 5000 --sort=id --refresh -o=test.json
./esm -d $target_host -y $index -c 1000 -b 1 --refresh -i=test.json