主要针对Elasticsearch的操作
我这里的数据没必要留存很久,nginx日志用来写周报图表用,也没必要留存很久
主要操作在Elasticsearch服务器上 :
1.查看所有索引
查看所有索引(包含索引数据大小)
curl 'localhost:9200/_cat/indices?v'
2.删除单条索引
(nginx-log-201-28-2023.03.11为你的索引名称)
curl -XDELETE http://localhost:9200/nginx-log-201-28-2023.03.11
显示如下为成功
{"acknowledged":true}
3.删除多条索引
#删除连续多条索引(3月2号至3月5号的)
curl -XDELETE http://localhost:9200/nginx-log-201-28-2023.03.1{2..5}
显示如下为成功
{"acknowledged":true}
4.删除指定多条索引(第二种方法)
#指定删除多条索引
curl -XDELETE http://localhost:9200/nginx-log-201-28-2023.03.16,nginx-log-201-28-2023.03.17
5.使用脚本自动删除索引
进入目录
cd /home/es
(目录不限制 选择自己的路径即可 记住就好)
vim deleteEsData.sh
脚本如下:删除9(可更改你的时间)天前的nginx-log-201-28-开头的索引
#!/bin/bash
#filename:deleteEsData.sh
today=`date +%Y.%m.%d`;
echo "今天是${today}"
# 获得要删除的日期
# 不指定参数时,默认删除3天前以tomcat-开头的数据(因为是凌晨删除,所以不含当天)
daynum=9
esday=`date -d '-'"${daynum}"' day' +%Y.%m.%d`;
echo "${daynum}天前是${esday}"
curl -XDELETE http://localhost:9200/nginx-log-201-28-${esday}
echo "${today}执行完成,nginx-log-201-28-${esday}文件已经被删除或不存在."
给deleteEsData.sh文件执行权限
chmod +x deleteEsData.sh
执行脚本(测试一下)
./deleteEsData.sh
显示如下
今天是2023.03.27
9天前是2023.03.18
{"acknowledged":true}2023.03.27执行完成,nginx-log-201-28-2023.03.18文件已经被删除或不存在.
6.执行crontab命令,设置定期任务
1.查看crontab服务状态
service crond status
2、设置定时计划
首先,如下命令,进入编辑状态
(每天凌晨两点执行 /home/es/deleteEsData.sh 删除日志命令 并记录日志到/home/es/deleteEsDataRun.log)
编辑任务
crontab –e
添加如下:
0 2 * * * sh /home/es/deleteEsData.sh >> /home/es/deleteEsDataRun.log>&1
3、查看定时任务
crontab -l
完成