Elasticsearch-shell脚本实现定时删除指定时间以前索引
〇、前言
因为elastiflow的数据量还是挺大的,接入了两台交换机的flow数据量已经开始有点大了。所以得写个脚本专门来清理索引
一、如何使用elastic的API
1.手动查询所有索引
在ELK 中加入了x-pack的
$ curl -XGET -u elastic:admins-1 'http://127.0.0.1:9200/_cat/indices?v'
没有加入x-pack的
$ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'
2.手动删除索引
在ELK 中加入了x-pack的
$ curl -XDELETE -u elastic:admins-1 'http://1127.0.0.1:9200/logstash-2019.04.01'
或
$ curl -XDELETE -u elastic:admins-1 'http://1127.0.0.1:9200/logstash-*'
没有加入x-pack的
$ curl -XDELETE 'http://1127.0.0.1:9200/logstash-2019.04.01'
或
$ curl -XDELETE 'http://1127.0.0.1:9200/logstash-*'
二、编写脚本
#!/bin/bash
# author:京东五星基础架构--带着泥土
#elasticsearch 的主机ip及端口
SERVER_PORT="127.0.0.1:9200"
#elasticsearch 账号
USER_NAME="*******"
#elasticsearch 密码
PASSWORD="*******"
LAST_DATA=`date -d "-10 days" "+%Y.%m.%d"`
function all_flow_index() {
echo "以下是所有的elastiflow索引"
echo "-------------------------------------"
curl -XGET -u $USER_NAME:$PASSWORD http://${SERVER_PORT}/_cat/indices/elastiflow-4.0.1-*
}
function today_flow_index() {
echo "以下是今天的elastiflow索引"
echo "-------------------------------------"
curl -XGET -u $USER_NAME:$PASSWORD http://${SERVER_PORT}/_cat/indices/elastiflow-4.0.1-$(date +%Y.%m.%d)
}
function delete_index() {
# 上面注释的这条是删除
curl -XDELETE -u $USER_NAME:$PASSWORD http://${SERVER_PORT}/elastiflow-4.0.1-${LAST_DATA}
#curl -XGET -u $USER_NAME:$PASSWORD http://${SERVER_PORT}/_cat/indices/elastiflow-4.0.1-${LAST_DATA}
}
delete_index
记得赋予脚本执行权限~
三、设定定时任务
crontab -e
0 1 * * * /root/clean-index.sh