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
posted @ 2021-02-07 14:01  带着泥土  阅读(415)  评论(0编辑  收藏  举报