需求
将生产环境指定的 es 索引导入到测试环境
思路
1、查询 prod 环境要导入的索引,导入到 txt 文件
2、删除 test 环境所有索引(依据实际情况)
3、编写脚本
4、查看进度
步骤
1、查看索引
查看 prod 环境索引
1
|
curl -s -XGET --user "用户名:密码" -H "Content-Type: application/json" 'es地址/_cat/indices?v' |grep ka_budget_spu-
|
保存索引名
1
|
curl -s -XGET --user "用户名:密码" -H "Content-Type: application/json" 'es地址/_cat/indices?v' |grep ka_budget_spu- |awk '{print $3}' | sort > prd_index_name.txt
|
2、删除索引
删除指定索引
1
2
|
curl -XDELETE -u "用户名:密码" 'es地址/索引名称'
curl -X DELETE -u "elastic:$PASSWORD" 'https://localhost:9200/_all' -k
|
删除所有索引
1
2
3
|
curl -X DELETE 'http://localhost:9200/_all'
# 一般不建议,最好是将要删除的索引放入txt文件,通过for循环遍历删除
|
3、编写脚本
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@node01 es]# cat import_pro_to_dev_index.sh
#!/bin/bash
for line in `cat prd_index_name.txt`
do
echo -------- $line --- $uat_index_name ----------------
echo "开始导入 $line -> $uat_index_name [mapping]"
elasticdump --input=https://账户:密码@es地址/$line --output=https://账户:密码@es地址/$uat_index_name --type=mapping
echo "开始导入 $line -> $uat_index_name [data]"
# --limit=20000依据实际情况调整
elasticdump --limit=20000 --input=https://账户:密码@es地址/$line --output=https://账户:密码@es地址/$uat_index_name --type=data
echo "导入结束 $line -> $uat_index_name"
done
|
查看进度
查看 test 环境目前导入索引的情况
1
|
curl -s -XGET --user "xxx:xxx" -H "Content-Type: application/json" 'https://xxx/_cat/indices?v' |grep ka_budget_spu
|
1
2
3
4
5
6
|
PUT log-2021-04-13/_settings
{
"index": {
"max_result_window": 2000000000
}
}
|
在 kiabana 进行处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
PUT /blog_article
{
"settings":{
"number_of_replicas":0,
"number_of_shards":1
},
"mappings":{
"properties":{
"briefContent":{
"type":"text",
"analyzer":"ik_max_word"
},
"title":{
"type":"text",
"analyzer":"ik_max_word"
}
}
}
}
## 取消查询10000条限制
PUT /blog_article/_settings
{
"index":{
"max_result_window":1000000
}
}
|
转自:
https://blog.csdn.net/qq_40887651/article/details/129121643