Elasticsearch 数据删除 (delete_by_query 插件安装使用)

在许多项目中,用户提供的数据存储盘大小有限,在运行一段时间后,大小不够就需要删除历史的 Elasticsearch 数据。
我们的 UEBA7.0 版本开始使用了 Elasticsearch5.x 版本,之前版本使用了 Elasticsearch2.X 版本,这 2 个版本在使用 delete_by_query 这个插件上是有区别的。

一、Elasticsearch2.x 版本的 delete_by_query 插件安装
Elasticsearch2.x 版本默认是不带 delete_by_query 插件的,需要自己安装。因为客户环境都是内网,所有我们需要自己下载,然后把相关内容拷贝到 Elasticsearch 目录下的plugin里面 ( 这边我提供下载地址:Elasticsearch -plugin-delete-by-query):
Elasticsearch 数据删除 (delete_by_query 插件安装使用)
注意文件权限
Elasticsearch 数据删除 (delete_by_query 插件安装使用)
安装完成要重启 Elasticsearch

二、Elasticsearch2.x 版本数据删除方法:
Elasticsearch 数据删除 (delete_by_query 插件安装使用)
2.x 使用要注意 2 个地方,一个是_query, 一个是DELETE
在 _query 后面一定要加上?wait_for_completion=false参数

三、Elasticsearch5.x 版本和新版本数据删除方法:
Elasticsearch 数据删除 (delete_by_query 插件安装使用)
5.x 以后的版本使用要注意 2 个地方,一个是_delete_by_query, 一个是POST
在 _delete_by_query 后面一定要加上?wait_for_completion=false参数

四、不管哪个版本删除, 删除后都有一个 Task 编号
Elasticsearch 数据删除 (delete_by_query 插件安装使用)
这个编号一定要记录下来, 因为上面的操作都是异步删除, 如果数据量大的话,elastic 不会立即删除全部数据, 而是缓慢删除, 磁盘也不会立即释放, 它是一个缓慢释放过程, 这个就是执行过程的编号, 我们可以通过 api 来获得当前删除任务的状态

http://192.168.0.16:6200/_tasks/qaCz2SGvQGe-ZCUXR6oRKg:130231

Elasticsearch 数据删除 (delete_by_query 插件安装使用)
可以看到目前这个删除任务已经完成, 一共删除 10 条记录, 删除开始时间戳也有, 持续时长也有