我有一个使用ElasticSearch数据流存储日志相关数据的用例
当前的elastisearch策略设置为在两个条件下滚动索引
1.如果年龄为1天,则滚动
1.如果最大主分片大小为24 GB,则翻转
每当通过API查询此数据时,它总是包含@timestamp过滤器(可以是过去5分钟到过去7天之间的任何时间)
查询这些数据的最佳方法是什么?
1.直接查询数据流名称(在查询中传递时间戳过滤器)
1.基于特定支持索引的时间范围选定查询
注:数据流中的数据量可以在200-600 GB左右
在使用上述两种方法中的任何一种时,是否有任何折衷?
也可以随意推荐更好的方法。
1条答案
按热度按时间hrysbysz1#
Elasticsearch被优化为通过查看字段统计数据而不处理数据和范围过滤器之间没有交集的段来跳过段。此外,如果你的查询涉及超过128个分片(由
pre_filter_shard_size
设置控制),elasticsearch将执行一个特殊的预过滤查询,它将从分片中收集字段统计信息,并跳过所有没有匹配文档的分片。所以,我会尝试使用1,并允许elasticsearch做它的事情。