我目前正在做一些事情,我连接到Elasticsearch服务器/数据库/集群,无论技术术语是什么,我的目标是获取过去24小时内的所有日志进行解析。我现在可以抓取日志,但它最多只能抓取10000个。作为参考,在过去的24小时内,我正在使用的数据库中总共有大约1000万个日志。
对于python,我使用requests库向elasticsearch发出一个http请求。我当前的查询只有参数size = 10,000。
我想知道这种情况下使用什么方法/查询?我已经看到了关于滚动ID或时间点API的东西,但我不确定什么是最适合我的情况,因为有这么多的日志。
我刚刚尝试增加大小到更多,但这并不能很好地工作,因为有这么多的日志和它的错误了。
1条答案
按热度按时间wnavrhmk1#
使用scroll API,它是专为您的用例。
Scroll API不再被鼓励用于深度分页,但是,如果你正在运行一个内部(日志)应用程序,滚动的性能影响不应该是一个问题,因为你不会有太多的查询服务。
许多Elasticsearch部署专注于日志使用Index Lifecycle Policies,每天创建一个新的索引(例如:
my-logs-2023-06-20
),并且日志会自动摄取到该索引中。一天结束后,索引将被设置为 * 只读 *,您可以自动将索引迁移到较冷的层,从而降低存储成本。这里有一个example ILM policy,你可能想考虑一下。
如果数百个索引听起来像是一场噩梦,不要担心,您可以创建一个alias,这样您就可以查询
all-my-logs
来搜索所有索引。