elasticsearch auto delete old indices
定在crontab 每天执行
crontab -e
* 2 * * * ~/autodelete.py
Python 代码如下
#!/usr/bin/env python
# encoding:utf-8
'''
'''
__author__ = 'moryaden at qq.com'
import sys
import argparse
import re
import os
import traceback
import logging.config
import datetime
# install with `pip install elasticsearch`
# for es 0.9x, install elasticsearch-py 0.4.x
import elasticsearch
def cfgLogging():
logpath = os.path.join("log")
if 'win' not in sys.platform:
os.system("mkdir -p " + logpath)
else:
if not os.path.exists(logpath):
os.makedirs(logpath)
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'default': {'format': '[%(asctime)-25s] [%(relativeCreated)-15s] %(levelname)-10s pid:%(process)d %(message)s'},
# default': {
# 'format' : '%(asctime)s %(message)s',
# 'datefmt' : '%Y-%m-%d %H:%M:%S'
# }
},
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'default'
},
'file': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'default',
'filename' : os.path.join(logpath, 'runlog.log'),
'maxBytes': 50 * 1024 * 1024, # 10M
'backupCount': 20,
'encoding' : 'utf8',
}
},
'loggers' : {
'' : {
'level' : 'DEBUG',
'handlers' : ['console', 'file'],
'propagate' : True
}
}
}
logging.config.dictConfig(LOGGING)
def parseCmdOptions():
parser = argparse.ArgumentParser()
parser.add_argument('-n', "--nday", help = "delete indices beyond which day, could specify -1, -2 and -n",
type = int, default = -7, choices = xrange(-10, 1))
cmdoptions = parser.parse_args()
return cmdoptions
def getDeadLineDate(day = -2):
dt_today = datetime.datetime.today()
time_delta = datetime.timedelta(day)
dead_line_day = dt_today + time_delta
return dead_line_day
def run():
logger = logging.getLogger('main')
cmdoptions = parseCmdOptions()
es_hosts = ['10.0.0.1', ]
es = elasticsearch.Elasticsearch(es_hosts)
dead_line_day = getDeadLineDate(cmdoptions.nday)
date_format = '%Y.%m.%d'
d = es.indices.get_alias('logstash*')
logger.info("I see all names {}".format(d.keys()))
for name in d:
m = re.search(r"^logstash.(.*)$", name)
if m:
s_date = m.group(1)
logdate = datetime.datetime.strptime(s_date, date_format)
if dead_line_day > logdate:
ack = es.indices.delete(name)
logger.info("deleting %s, ack={}".format(ack), name)
else:
logger.info("keeping %s", name)
def main():
try:
cfgLogging()
logger = logging.getLogger("main")
run()
except SystemExit:
pass
except:
logger.info('----->>>>>>>>>> {}'.format(traceback.format_exc()))
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
elasticsearch auto delete old indices的更多相关文章
- vim highlight whitespace at end of line and auto delete them
install Vundle.vim mkdir ~/.vim/bundle git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bun ...
- elasticsearch 基础 —— Delete By Query API
Delete By Query API _delete_by_query 的简单用法,就是在查询匹配到的每个文档上执行删除.例如: POST twitter/_delete_by_query { &q ...
- Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
Elasticsearch的删除也是很灵活的,下次我再介绍,DeleteByQuery的方式.今天就先介绍一个根据ID删除.上代码. package com.sojson.core.elasticse ...
- elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...
- Elasticsearch系列(五)----JAVA客户端之TransportClient操作详解
Elasticsearch JAVA操作有三种客户端: 1.TransportClient 2.JestClient 3.RestClient 还有种是2.3中有的NodeClient,在5.5.1中 ...
- Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介.Java REST Client.Java Client.Spri ...
- 自动删除 Elasticsearch 索引
#!/bin/bash # author: Wang XiaoQiang# crontab -e# 0 0 * * * /root/script/del_esindex.sh # auto delet ...
- Elasticsearch java api操作(二)(Java High Level Rest Client)
一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...
- 2 - 基于ELK的ElasticSearch 7.8.x技术整理 - java操作篇 - 更新完毕
3.java操作ES篇 3.1.摸索java链接ES的流程 自行创建一个maven项目 3.1.1.依赖管理 点击查看代码 <properties> <ES-version>7 ...
随机推荐
- Oracle日期时间
今天上班一个问题:sql获取最近三天内上传文档在页面显示标记new,超过三天则不显示标记,并且在标题标明new数量. 完成思路:sql上加一字段查询出三天内为1,其他为非1;在angularJs的se ...
- django允许跨域备忘笔记
详细信息请拜读网址:https://github.com/ottoyiu/django-cors-headers/ 安装: 在virtaulenv环境中执行 pip install django-co ...
- Java数据结构和算法之栈与队列
二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为 ...
- Makefile 开发环境全能管家
变量的应用: CC=gcc RM=rm EXE=main.exe OBJS=目标 伪目标的应用: .PHONY:clean 自动变量的应用: $@:表示一个规则的目标 $^:表示的是规则中的所有的先决 ...
- Python 基礎 - 字符編碼
Python 解釋器在加載 .py 文件中的代碼時,會對內容進行編碼 (默認 ascill) ASCII (American Standard Code for Information Interch ...
- Python::OS 模块 -- 进程参数
os模块的简介请参看 Python::OS 模块 -- 简介 os模块的文件和目录操作 Python::OS 模块 -- 文件和目录操作 os模块的进程管理 Python::OS 模块 -- 进程管理 ...
- select 通过jq赋值
<select name="F_YSBAQLX" onchange="selectvalue()" id="lista" prompt ...
- Java笔记5-修饰符,重载,递归,数组
方法的定义修饰符 返回类型 方法名(参数列表) throws 异常类型列表 { //方法体}==如何来设计一个方法:案例:请根据如下的业务分别设计出方法1.根据给定的年份判断是否是闰年?public ...
- POJ 2481 Cows(树状数组)
Cows Time Limit: 3000MS Memory L ...
- CE5 中断
一.intr.h里面定义硬件中断号 #define IRQ_EINT0 0 #define IRQ_EINT1 1 #define IRQ_EINT2 2 #define IRQ_EINT3 3 #d ...