elasticsearch 数据导出删除

elasticsearch 数据导入导出删除

elasticsearch可以通过curl访问es集群获取数据,也可以通过elasticdump导出数据

查看数据

#查看es的所有索引
curl -u admin:abc123 -X GET http://192.168.10.28:30001/_cat/indices?v

elasticdump导出数据

es支持json的导入导出

#安装elasticdump
npm install elasticdump -g

#导出数据,从10.28的es,账号密码为admin:password123,把索引为data-aaa导出到data_2022_backup下
# limit默认是100,根据自己需求调整大小,注意过大可能会影响es性能
elasticdump --input http://admin:password123@192.168.10.28:30007/data-aaa --output ./data_2022_backup/data-aaa.json --type=data --limit 10000

elasticdump删除数据

#该操作会删除整个索引上匹配查询条件的所有文档,请务必确认查询条件是否正确,以免误删
curl  -u admin:abc2022  -X POST 'http://192.168.10.28:30001/dev-media-2022-10-18/_delete_by_query'  -H "Content-Type: application/json"  -d '{ "query": { "match_all": {} } }'

#删除后,在index management上还可以搜到,只是大小由原先的几M变成了300kb左右
#可以通过下面命令彻底删除
curl -XDELETE  -u admin:admin123  http://192.168.10.28:3001/dev-media-2022-10-19
删除遇到过的问题

for循环删除的时候出现了几个问题

问题1

for循环的时候引用参数引用不到

#如下,引用${i},而两边用的是单引号,参数不生效。
for i in `cat del_index.list`;do curl  -u admin:asdas  -X POST 'http://192.168.10.28:30007/${i}/_delete_by_query'  -H "Content-Type: application/json"  -d '{ "query": { "match_all": {} } }';done &

改动

#把${i}改成 '"$i"'。去掉大括号,两个单引号里面包两个双引号,双引号里面是$i
for i in `cat del_index.list`;do curl  -u admin:admin123  -X POST 'http://192.168.10.28:30001/'"$i"'/_delete_by_query'  -H "Content-Type: application/json"  -d '{ "query": { "match_all": {} } }';done &
问题2

有的索引带[dev]字样
用for循环打印出来的没问题,但是放到curl去删除的时候,curl把它传入后,它会把[]识别为他自己的匹配规则。
我们需要提前编辑好我们的索引列表

vim del_index.list

#进入命令行模式执行 ,把所有的[dev] 改成 \[dev\],这样加上转换符即使传到curl里面,也不会被识别成别的意思。
:%s/\[dev]/\\[dev\\]/g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值