我正在构建一个定期查询系统资源使用情况并将数据记录到ElasticSearch中的应用程序。我希望最终以给定时间段的图形形式显示此信息。请注意,通常用户希望查看一个设定时间段的统计信息-
正因为如此,我一直在想最有效的方法将数据存储到ElasticSearch中,以优化搜索速度。很明显,每个条目都有一个单独的DateTime字段(最小为毫秒),但是如果我可以只对特定索引执行查询,搜索将会快得多。
我的计划是将索引设置为当日(即2014_04_09
)。据此,您可以将多个索引链接到单个别名。在这种情况下,我将在上面为2014_04
和2014
设置一个别名。这背后的想法是,我可以对2014_04
索引执行搜索,这将自动搜索4月份的所有单独索引日。这样做是否奏效?如果奏效,它是否最佳?
还有谁在ElasticSearch中有过类似的日期时间查询经历吗?谢谢!
我会阅读这篇文章的全部内容来给你更多的了解,它确实涉及到Elasticsearch和时间戳数据。希望这有帮助。
正如您在注释中了解的那样,将这些信息合并到一个索引中会更有意义,因为它是相同的信息,并且会使以后的查询更加简单。
通过每天、每月和每年创建索引,您将不得不对文档进行三重索引,或者使用复杂的逻辑来控制别名,在我看来,创建大量索引(每天一个)是不值得的。如果您是为了日志记录而这样做,那么logstash显然会是一个更好的答案,正如Nate所指出的那样。在这种情况下,可能值得注意的是,当索引没有提供任何值时,您可以关闭索引(“关闭”),因此除了占用磁盘空间之外,它们不会产生任何负面影响。
撇开日志记录的话题,创建n
索引将固有地导致多个碎片(至少n
)。添加太多的碎片会不必要地使事情变慢,而一个碎片就足够了。使用别名来完成这项工作将在添加额外索引时创建频繁的维护。
通过将这些组合到一个索引中,您可以轻松地按需执行高性能分析,并且可以在适当的时候更容易地跨多个节点扩展Elasticsearch。有用的是,您几乎可以肯定地发现更复杂的聚合,并且您可能会从更简单的索引中获益。
即使缓存了,您也会收到应用于筛选器的更新。通过生成一个简单的筛选器,运行它,然后在其预期的结果集中添加其他内容,可以很容易地证明这一点。
问题内容: 我有一个日期对象列表和一个目标日期。我想在列表中找到最接近目标日期的日期,但仅找到目标日期之前的日期。 示例:2008-10-1 2008-10-2 2008-10-4 目标日期为2008-10-3,我想获得2008-10-2 最好的方法是什么? 问题答案: Sietse de Kaper解决方案采用了 反向 排序的列表,绝对不是最自然的解决方案 Java中的自然排序顺序遵循递增的自然
我用 执行时 我想要一个选择,将始终从当前系统日期的最后10天内返回消息。请提供正确的SQL语句帮助。
你好,我有两列日期时间的多行,我想获取所有记录的两列之间的最新日期(最高)的行。请查看以下内容: 我想从两列(Date1和Date2)的所有记录中获取最高日期。从上表中,我想要第三行日期,因为这是两列所有记录中的最高日期(2021-06-16 20:04:24)。如果我们在2021-06-16 09:20:41之前更改date1列第3行,那么结果将是第2行,因为在date2中找到了最高日期记录。请
问题内容: 从SQL Server的datetime字段中删除时间部分时,哪种方法提供最佳性能? 或者 第二种方法的确以任何一种方式发送了更多的字节,但这可能不如转换速度那么重要。 两者看起来都非常快,但是处理成千上万行或更多行时速度可能会有所不同? 另外,是否有更好的方法可以消除SQL中日期时间的时间部分? 问题答案: 严格来说,方法耗费的资源最少: 事实证明,花了太多时间的人在相同的总持续时间
问题内容: 我想比较没有时间的日期 以上查询可以吗?或您建议的其他更好的解决方案 我正在使用SQL Server 2005 日期以UTC格式保存在服务器上 用户根据此数据属于不同的时区 问题答案: 不要使用convert-无原因地涉及字符串。一个技巧是日期时间实际上是一个数字,而天是整数部分(时间是小数部分);因此,一天是值的 底数 :那只是数学,而不是字符串-快得多 在您的情况下,无需转换回日期
问题内容: 我正在尝试找出最有效(最佳性能)的方法来检查当前日期的日期字段。目前,我们正在使用: 问题答案: 编辑:正如对此答案的注释中所指出的那样,这不是理想的解决方案。还要检查该线程中的其他答案。