当前位置: 首页 > 知识库问答 >
问题:

在ElasticSearch中查询日期时间条目的最佳设置?

狄楷
2023-03-14

我正在构建一个定期查询系统资源使用情况并将数据记录到ElasticSearch中的应用程序。我希望最终以给定时间段的图形形式显示此信息。请注意,通常用户希望查看一个设定时间段的统计信息-

  • 当前日期
  • 当月
  • 当前年份

正因为如此,我一直在想最有效的方法将数据存储到ElasticSearch中,以优化搜索速度。很明显,每个条目都有一个单独的DateTime字段(最小为毫秒),但是如果我可以只对特定索引执行查询,搜索将会快得多。

我的计划是将索引设置为当日(即2014_04_09)。据此,您可以将多个索引链接到单个别名。在这种情况下,我将在上面为2014_042014设置一个别名。这背后的想法是,我可以对2014_04索引执行搜索,这将自动搜索4月份的所有单独索引日。这样做是否奏效?如果奏效,它是否最佳?

还有谁在ElasticSearch中有过类似的日期时间查询经历吗?谢谢!

共有2个答案

秦永望
2023-03-14

我会阅读这篇文章的全部内容来给你更多的了解,它确实涉及到Elasticsearch和时间戳数据。希望这有帮助。

薛烨霖
2023-03-14

正如您在注释中了解的那样,将这些信息合并到一个索引中会更有意义,因为它是相同的信息,并且会使以后的查询更加简单。

通过每天、每月和每年创建索引,您将不得不对文档进行三重索引,或者使用复杂的逻辑来控制别名,在我看来,创建大量索引(每天一个)是不值得的。如果您是为了日志记录而这样做,那么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-无原因地涉及字符串。一个技巧是日期时间实际上是一个数字,而天是整数部分(时间是小数部分);因此,一天是值的 底数 :那只是数学,而不是字符串-快得多 在您的情况下,无需转换回日期

  • 问题内容: 全部, 我敢肯定这是一个非常简单的SQL查询问题,但是我敢肯定有一个很好的方法,也很糟糕的方法来做到这一点。留给我自己的设备,我有可能以后者结束。所以… 我在Access中有一个表,其中的数据如下所示: 我想要获取的是每个具有唯一“截止日期”日期(采用YYYYMM格式)的唯一ID的“值”。 因此,我的结果集应如下所示: 请注意,不同的ID将具有不同的“截止日期”日期。换句话说,我不能简