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 ...
随机推荐
- VaildForm 自定义提示消息
ValidForm插件提供了7种提示效果,其中有四种自定义效果,具体访问地址:http://validform.rjboy.cn/demo.html 个人偏爱其中两种,即 l 提示效果四:[自定义提示 ...
- iOS开发UI篇—UIScrollView控件介绍
iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...
- PHP 缓存扩展opcache
opcache (全程 zend opcache): 从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用 ...
- IT公司100题-32-交换元素,使数组差最小
问题描述: 有两个整数序列a, b,大小都为n, 序列元素的值任意整数,无序. 要求:通过交换a, b 中的元素,使得sum(a)-sum(b),差最小. 例如: var a=[80, 40, 60, ...
- VS2015打开工程 未能正确加载“”包的问题
启动vs2015专业版时,出现类似于这样的提示框,有好几个,点击是或否,但下次打开还是会出现.寻找了网上的一些解决办法,例如用vs命令窗口或其他,但都无疾而终,下面提供的这个办法,顺利解决此问题 1. ...
- Android 生成颜色器
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- Active Record: 資料庫遷移(Migration) (转)
Active Record: 資料庫遷移(Migration) Programming today is a race between software engineers striving to b ...
- 转 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- linux命令:which
1.命令介绍: which用来在指定的路径搜索某个系统命令的位置,并返回第一个搜索结果. 2.命令格式: which [选项] 系统命令 3.命令参数: -n 指定文件名长度,指定的长度必须大于或等 ...
- qt5.4 msvc2013_64安装 目标计算机不匹配问题
本文主要解决一个问题:即在安装完成之后如下目标计算机不匹配问题. ------------------------------------------------------------------ ...