开发的时候遇到这样的问题,所以记录下来。

首先可以尝试下面的命令,一个命令删除所有的索引:

# 使用时将 http://localhost:9200 替换成自己的 ES 服务地址,后面所有的同理,不再赘述
curl -X DELETE 'http://localhost:9200/_all'

执行这条命令,可能会成功,如果成功,over,结束了,就是这么简单。

但是有时候会报错,not allow,说你没有权限。

这时候可以尝试另一种办法,就是一个一个删除,但是肯定不能手工来做,让 shell 来帮忙:

# 原理就是先执行 _cat/indices 列出所有的索引,然后循环结果,一个一个删除
for i in `curl -XGET 'http://localhost:9200/_cat/indices' | awk '{print $3}'`; do curl -XDELETE "http://localhost:9200/$i"; done

这第二种办法比较灵活,如果不是想删除所有的,而是符合某种条件的,可以在得到结果之后,利用 grep 进行过滤,然后进行删除。还有,如果想批量操作索引的,都可以这么写,不一定是删除,打开关闭索引,索引的某个设置等等,都是可以的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐