Skip to content

Instantly share code, notes, and snippets.

@qdongxu
Created June 9, 2022 15:09
Show Gist options
  • Select an option

  • Save qdongxu/c6b8a9ffb1720a3db309531fa9b99df9 to your computer and use it in GitHub Desktop.

Select an option

Save qdongxu/c6b8a9ffb1720a3db309531fa9b99df9 to your computer and use it in GitHub Desktop.
clean overdue elasticsearch indices
#!/usr/bin/env python3
import requests, re, sys
from datetime import datetime
from datetime import timedelta
import syslog
overdue_days = int(sys.argv[1])
es_url = sys.argv[2]
syslog.syslog(syslog.LOG_INFO, "clean indices before %d from %s" % ( overdue_days, es_url))
today = datetime.now()
resp = requests.get(es_url + '/_cat/indices?v=true&s=index')
for line in resp.iter_lines():
fields = re.split(r' +', str(line))
m = re.search(r'^(.*)-(\d\d\d\d)[\.\-](\d\d)[\.\-](\d\d)$', fields[2])
if m:
d = datetime.strptime("%s %s %s" % ( m.group(2), m.group(3), m.group(4)), "%Y %m %d")
delta = today - d
if delta.days > overdue_days:
try:
syslog.syslog(syslog.LOG_INFO, "delete index %s, days: %d" % ( m.group(), delta.days))
resp = requests.delete(es_url + '/%s' % m.group())
if resp.status_code != 200:
syslog.syslog(syslog.LOG_ERR, "failed %s" % str(resp.content) )
except Exception as e:
syslog.syslog(syslog.LOG_ERR, "exception: %s" % repr(e))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment