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

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

# 使用时将 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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐