ES是否支持大数据量的历史数据查询

Elasticsearch | 作者 wangxinrong | 发布于2019年10月08日 | 阅读数:257

目前我们ES集群,默认只打开最近3天的索引,更早的索引会保持关闭状态,保存3-6个月以后删除
如果有查询3天前数据的需求,会单独打开对应日期的索引,查询后关闭,我想基本上大部分人也都是这么做的
如果现在有需求,要统计整个3-6个月这段时间的数据,或者不确定具体日期,要在半年的范围内查询一条日志,如果一天的索引有1T或者更大数据量的话,这样基本上没办法做到,全部打开这些索引会占用大量时间、系统资源,并且数据量太大服务器资源无法支持一次查询

请问这种情况,要怎么实现呢,是否还适合用ES,如果可以的话一般怎么做呢?
我见过有的是把历史数据存到hive、 impala等大数据平台中进行查询,另外阿里云的日志服务也可以一直保持所有日志打开状态供查询,不知道是不是用的ES服务
已邀请:

trycatchfinal

赞同来自:

参考下ES冷热分离:https://blog.csdn.net/xujiamin ... 54431
不知道是否满足你的需求

wangxinrong

赞同来自:

冷热分离只能解决历史数据存储的成本吧,如果要把历史数据全部打开查询,冷数据节点性能更差了

cyfcooler

赞同来自:

2种方法吧:1. 单es节点给30G内存大约能服务10T索引数据(包括副本), 然后一般内存大一些的一台服务器上可以起多个es实例. 只要给足这个资源就能打开所有历史数据的索引, 然后查询可以通过参数 max_concurrent_shard_requests 来限制同时查询的shard数来控制内存使用率.
2. 通过应用程序来分批查不同天的索引, 然后做聚合.

locatelli

赞同来自:

可以考虑rollup功能(https://www.elastic.co/guide/e ... .html)。这个功能从6.3开始就有了,不过仍然还是experimental的,所以用的时候要充分测试。

sun_changlong

赞同来自:

博主您好 ,更早的索引关闭是怎么实现的? 是自己用脚本实现的么?

wangxinrong

赞同来自:

可以自己写脚本关闭,也可以用curator

wangxinrong

赞同来自:

rollup的功能是对数据做聚合,但我需要保存全量的历史数据,存放的是日志,有时需要查询很久之前的某一个接口调用记录或者是交易信息等。

要回复问题请先登录注册