python定时删除指定索引

脚本

python 复制代码
import logging
from datetime import datetime, timedelta
from elasticsearch import Elasticsearch

# 配置日志记录
logging.basicConfig(
    filename='delete_uat_indices.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

# Elasticsearch 集群的连接信息
ELASTICSEARCH_HOST = "http://192.178.18.209:9200"  # 修改为你的 Elasticsearch 地址
USERNAME = "elastic"  # 修改为你的用户名
PASSWORD = "7F9L%mYWjWtb"  # 修改为你的密码
INDEX_PATTERN = "*uat*"  # 匹配带有 "uat" 的索引

def delete_old_indices():
    # 连接到 Elasticsearch 集群
    es = Elasticsearch([ELASTICSEARCH_HOST], basic_auth=(USERNAME, PASSWORD))
    # 检查连接是否成功
    if not es.ping():
        logging.error("无法连接到 Elasticsearch 集群")
        return

    logging.info("成功连接到 Elasticsearch 集群")
    # 计算 5 天前的日期
    five_days_ago = datetime.now() - timedelta(days=2)
    date_str = five_days_ago.strftime('%Y.%m.%d')

    # 获取所有索引(确保使用关键字参数)
    try:
        indices = es.indices.get(index="*uat*")  # 使用关键字参数
    except Exception as e:
        logging.error(f"获取索引列表失败: {e}")
        return

    # 过滤出符合条件的索引
    indices_to_delete = []
    for index_name in indices.keys():
        if not index_name.startswith(".") and "uat" in index_name:
            # 提取索引名称中的日期部分
            try:
                index_date_str = index_name.split("-")[-1]  # 假设日期在索引名称的最后部分
                index_date = datetime.strptime(index_date_str, '%Y.%m.%d')
                if index_date < five_days_ago:
                    indices_to_delete.append(index_name)
            except Exception as e:
                logging.warning(f"无法解析索引名称 {index_name} 的日期部分: {e}")

    if not indices_to_delete:
        logging.info(f"未找到符合条件的索引: 包含 'uat' 且日期为 {date_str}")
        return

    # 删除符合条件的索引
    for index in indices_to_delete:
        try:
            es.indices.delete(index=index)
            logging.info(f"成功删除索引: {index}")
        except Exception as e:
            logging.error(f"删除索引 {index} 时失败: {e}")

if __name__ == "__main__":
    delete_old_indices()

定时任务

crontab -e

#每天23点30定时删除5天前的uat环境日志

30 23 * * * /usr/local/python-3.9/bin/python3.9 /data/delete_old_indices/delete_uat_old_indices.py >/dev/null 2>&1

相关推荐
Allen_LVyingbo32 分钟前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang1 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
我命由我123452 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
atwednesday2 小时前
一文理解python中的task,协程,woker
python
用户0332126663673 小时前
使用 Python 在 Excel 中添加与删除筛选器
python·excel
1M553 小时前
AI应用后端工程(03):回答输出一半就断了:AI 流式接口如何定义成功与失败?
python·面试·职场和发展·计算机专业·agent开发
AI 编程助手GPT4 小时前
GPT 排的日志时间线差一小时?用 zoneinfo 复现夏令时回拨
人工智能·python·gpt
Thanks_ks4 小时前
【第 003 讲】全面认识 Python:语言起源与设计哲学 | 行业地位与流行趋势 | 技术优势与应用领域 | 技术边界与工程局限
人工智能·python·数据分析·编程语言·python 入门·web 开发·python 之禅
用户790860057265 小时前
给 AI 装上耳朵:离线语音识别与唤醒,国内环境踩坑实录
python