Elasticsearch删除所有数据

项目中碰到一个elasticsearch的purge需求,就是说在不删除index和type的前提下,清除其中的所有数据。

用es的delete by query api可以做到,尽管官方声明deprecated in 1.5.3,但是经过测试1.8还是可以用的(真不敢想象要是不能用了怎么办。。。连个purge的api都没有。。),语法如下:

1
2
3
4
5
DELETE /<index>/<type>/\_query -d '{
"query" : {
"match_all" : {}
}
}'

简单来说就是根据查询条件查出所有符合条件的数据然后删掉,然后传入的查询条件是match_all。

注意DELETE /<index>/* 也可以删除所有数据,但相应的mapping也都没了,还不如重建索引。