使用es Note for ES2+批量删除数据,需要安装delete-by-query插件,集群环境只需安装到一台Node节点上,安装方法如下两种:
注:delete-by-query插件的版本,需要与es的版本怎么对应,否则es会启动不成功,当es存储数据的硬盘空间不足85%时,实际不到85%,数据不会再分片,此时去删除数据是删除不了
1、在线安装
sudo bin/plugin install delete-by-query
安装完后需要重启es服务
# wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/delete-by-query/2.3.5/delete-by-query-2.3.5.zip
# unzip delete-by-query-2.3.5.zip
# cp -r * /applications/elasticsearch-2.3.5/
[root@htc plugins]# ls /applications/elasticsearch-2.3.5/plugins/delete-by-query/
delete-by-query-2.3.5.jar plugin-descriptor.properties
安装完插件后需要重启es
#统计大于时间的数量
curl -XGET "192.168.1.16:9200/app/_count?pretty" -d "{
"query":{
"range":{
"queryTime":{
"lte" : "1506493824"
}
}
}
}"
#查看索相字段类型
curl -XGET "192.168.1.16:9200/app/_mapping?pretty"
删除数据脚本
#!/bin/sh
index_name="app"
deldays="1506502200000"
/usr/bin/curl -XDELETE "192.168.1.16:9200/${index_name}/_query?pretty" -d "
{
"query":{
"filtered": {
"filter": {
"bool": {
"must": {
"range":{
"queryTime":{
"lte":${deldays}
}
}
}
}
}
}
}
}" >> esdeldata.log
通过js获取时间戳
new Date("2017-09-28 15:30:30").getTime();
1506492264000
curl -XDELETE http://localhost:9200/.kibana
通过脚本批量删除索引
#!/bin/bash
index=$1
curl -XDELETE http://localhost:9200/${index}-*
if [ $? == 0 ];then
echo "删除${index}成功"
fi