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
分类:
elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2022-05-05 k8s Flannel网络规划服务
2022-05-05 k8s Job&CronJob