如何清理Elasticsearch特定时间段数据?

问题是这样的,项目上新上一套ELK日志分析系统,随着时间的推移,日志越来越大,就写了个定时任务清理7天前的数据。
 


#! /bin/bash
echo "Begin @ `date +%Y%m%d%H%M%S`"
d7=$(date +%Y.%m.%d --date '7 days ago')
curl -XDELETE "http://192.168.1.30:9200/logstash-$d7?pretty"
echo "End @ `date +%Y%m%d%H%M%S`"


后来,发现这样并没有解决实际问题,因为绝大多数日志产生于系统每天凌晨0点到8点之间的批处理任务所产生,而这些日志其实是没有分析价值的。所以,请问下,如何从Elasticsearch中只清理掉系统每天凌晨0点到8点之间所产生的数据呢?
 
系统中,最近7天的日志信息如下:


[root@localhost rm_elk_log_7days]# curl http://192.168.1.30:9200/_cat/indices
yellow open logstash-2016.12.11 5 1  85735 0  31.9mb  31.9mb 
yellow open logstash-2016.12.12 5 1 493016 0 224.7mb 224.7mb 
yellow open twitter             5 1      1 0   4.3kb   4.3kb 
yellow open logstash-2016.12.10 5 1 136902 0    47mb    47mb 
yellow open .kibana             1 1     28 1  42.1kb  42.1kb 
yellow open logstash-2016.12.14 5 1 536879 0 214.7mb 214.7mb 
yellow open logstash-2016.12.13 5 1 609423 0 286.4mb 286.4mb 
yellow open logstash-2016.12.16 5 1  88745 0  41.4mb  41.4mb 
yellow open logstash-2016.12.15 5 1 598826 0 272.1mb 272.1mb 
[root@localhost rm_elk_log_7days]#


新手,刚接触ELK,请给个思路或者解决问题的方向,谢谢!
已邀请:

wungking - 90后it

赞同来自: zhwy103 greatstep renguzi

这个有三种思路,
第一种:设置入ES的条件,0-8点的日志数据就不入ES,这样就不需要有删除的操作;
 
第二种:整理这类日志,将需要的数据 转存到新的索引下,不需要的直接丢掉,这样可以保证你能存储较多的日志数      据,也不担心容量增加的太快;
 
第三种:楼上提的那种方法,官网上只是一个实验性的API,按照官网描述,这个操作应该是比较耗资源的;
 
综上:你还是考虑第一种方法吧,不收集不需要的时间段的数据

medcl - Elasticsearch老司机

赞同来自:

Hey,es5.0提供了 Rollover 特性,去看看吧

guopengfei

赞同来自:

我发现了一个不错的elasticsearch 2.3.3的翻译文档,还不错:
https://www.blog-china.cn/temp ... .html

guopengfei

赞同来自:

我发现了一个不错的elasticsearch 2.3.3的翻译文档,还不错,你可以在这个中文翻译文档里看一下有没有你想要的东西:
https://www.blog-china.cn/temp ... .html

要回复问题请先登录注册