elasticsearch 弹性索引名称中添加日期的原因和后果,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" /> elasticsearch 弹性索引名称中添加日期的原因和后果,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" />

elasticsearch 弹性索引名称中添加日期的原因和后果

elasticsearch 弹性索引名称中添加日期的原因和后果,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我正在考虑通过FileBeat和Logstash将我的应用程序日志发送到Elastic 6.x。正如中提到的和其他地方推荐的,似乎我需要将日期添加到索引名中。这样做的原因是,当需要删除旧数据时,按日期删除整个索引比按单个文档更容易。这是真的吗 如果我应该遵循将日期添加到索引名的建议,我很好奇我还需要做些什么来确保无缝查询?我的意思是查询,特别是在Kibana,例如,在过去的一天中,需要查看今天的指数以及昨天的指数 说到Kibana中的查询,是否有一种方法可以简单地使用基本索引名而不使用日期戳,即

我正在考虑通过FileBeat和Logstash将我的应用程序日志发送到Elastic 6.x。正如中提到的和其他地方推荐的,似乎我需要将日期添加到索引名中。这样做的原因是,当需要删除旧数据时,按日期删除整个索引比按单个文档更容易。这是真的吗

如果我应该遵循将日期添加到索引名的建议,我很好奇我还需要做些什么来确保无缝查询?我的意思是查询,特别是在Kibana,例如,在过去的一天中,需要查看今天的指数以及昨天的指数

说到Kibana中的查询,是否有一种方法可以简单地使用基本索引名而不使用日期戳,即设置它以使我看不到或必须处理以日期命名的索引

编辑:Kamal提出了一个很好的观点,我没有提供任何关于集群和需求的信息。以下是我的工作内容:

您的每日数据创建/预期计数是多少

我不确定。我不希望每天有超过1 GB的数据,也不希望每天有超过10万个文档。因为这些都是日志,所以我不希望文档创建后会有任何更新

未来1年-5年的数据增长率

目前,我看不到每天超过1 GB的增长率

如果有,除了您之外,还有多少团队在使用同一集群 任何

集群将由我的团队实际查询使用。我们现在大约有5个用户,但我没有看到超过10个用户,这不是并发的,只是超过一天或一个月

使用模式、使用的查询类型等

我不确定,但是除了删除之外,肯定不会有数据更新

硬件详细信息


我还没有和管理层一起解决这个问题。在大多数情况下,我希望有3个节点。此外,这并不重要,也就是说,如果我们因为某种原因丢失了所有日志,我不会因此而失眠

在索引名中包含日期是许多Elasticsearch用户实现的一个非常常见的用例。它有助于归档/清除您提到的旧索引。你不需要做任何额外的事情来查询。将index basename设置为索引的索引模式,例如logstash-*并且您可以在Kibana中查询特定的索引模式。

在索引名称中包含日期是许多Elasticsearch用户实现的非常常见的用例。它有助于归档/清除您提到的旧索引。你不需要做任何额外的事情来查询。将您的index basename设置为索引的索引模式,例如logstash-*,您可以在Kibana中查询该特定索引模式。

首先,您需要后退一步,了解您确实需要多个索引还是单个索引,在使用日期字段查询特定日期时,您需要过滤文档

在做出这样的决定之前,你必须有一些问题

您的每日数据创建/预期计数是多少 未来1年-5年的数据增长率 除了您的集群,还有多少团队在使用同一集群(如果有的话) 使用模式、使用的查询类型等。 硬件详细信息 优势

从某种意义上说,使用多个索引,并将日期字段作为其索引名会更有利

您可以删除旧索引而不影响新索引。 如果必须更改映射,则可以使用新索引进行更改,而不会影响旧索引。相对较少的开销,而对于单个索引,您必须重新编制所有文档的索引,如果大小相当大,则需要花费更多的时间。如果这种情况时不时发生,您将需要提出一种解决方案,您必须在最小使用量的情况下执行此类操作。这意味着,它会损害生产率。 使用多个索引进行搜索仍然很方便。 不太确定,但使用多个索引更容易缩放。 缺点是:

为可能会浪费一些存储空间的每个索引创建额外的碎片。 监控/运营团队维护多个索引的开销。 有时可能会导致过度创建索引。 无映射更改和更少的文档插入在100s或几个100s中,最好使用单个索引。 找出最佳解决方案的唯一方法,也是唯一正确的方法,就是让一个集群与生产集群非常相似,数据与生产集群太相似,尝试各种配置,看看哪种解决方案最适合

说到Kibana中的查询,有没有一种方法可以简单地处理 不带日期戳的基本索引名称,即设置为 我没有看到或必须处理的日期命名索引

有。如果索引名为logs-0001、logs-0002,则可以使用
se在查询时将-*记录为indexname

首先,您需要后退一步,了解您真的需要多个索引还是单个索引,在使用日期字段查询特定日期时,您需要过滤文档

在做出这样的决定之前,你必须有一些问题

您的每日数据创建/预期计数是多少 未来1年-5年的数据增长率 除了您的集群,还有多少团队在使用同一集群(如果有的话) 使用模式、使用的查询类型等。 硬件详细信息 优势

从某种意义上说,使用多个索引,并将日期字段作为其索引名会更有利

您可以删除旧索引而不影响新索引。 如果必须更改映射,则可以使用新索引进行更改,而不会影响旧索引。相对较少的开销,而对于单个索引,您必须重新编制所有文档的索引,如果大小相当大,则需要花费更多的时间。如果这种情况时不时发生,您将需要提出一种解决方案,您必须在最小使用量的情况下执行此类操作。这意味着,它会损害生产率。 使用多个索引进行搜索仍然很方便。 不太确定,但使用多个索引更容易缩放。 缺点是:

为可能会浪费一些存储空间的每个索引创建额外的碎片。 监控/运营团队维护多个索引的开销。 有时可能会导致过度创建索引。 无映射更改和更少的文档插入在100s或几个100s中,最好使用单个索引。 找出最佳解决方案的唯一方法,也是唯一正确的方法,就是让一个集群与生产集群非常相似,数据与生产集群太相似,尝试各种配置,看看哪种解决方案最适合

说到Kibana中的查询,有没有一种方法可以简单地处理 不带日期戳的基本索引名称,即设置为 我没有看到或必须处理的日期命名索引


有。如果索引的名称为logs-0001、logs-0002,则可以在查询时使用logs-*作为索引名

谢谢你,本5556。我想知道是否需要在Elastic中设置索引别名来使用它。我还想知道是否有一种方法可以在Kibana的索引名中不使用通配符*?不,您不需要别名。如果不使用带有通配符的索引模式,您将如何查看数据或创建可视化效果?谢谢ben5556我希望在Kibana中使用通配符的替代方案。很遗憾,我不能选择两个答案,但你和卡马尔确实回答了问题的不同部分。再次谢谢你,谢谢你。我想知道是否需要在Elastic中设置索引别名来使用它。我还想知道是否有一种方法可以在Kibana的索引名中不使用通配符*?不,您不需要别名。如果不使用带有通配符的索引模式,您将如何查看数据或创建可视化效果?谢谢ben5556我希望在Kibana中使用通配符的替代方案。很遗憾,我不能选择两个答案,但你和卡马尔确实回答了问题的不同部分。再次感谢你,谢谢你,卡马尔。我喜欢你要去的地方,尤其是这个选择不是一成不变的。我想知道你是否可以解释一下,在一个索引中使用deleteapi删除一天的文档,与删除整个索引相比,会有多糟糕。当集群上的用户较少时,我可以整晚这么做吗?发生这种情况时,集群是否无法添加日志,或者只是延迟添加日志?空间最终是否会恢复,即几天后,而不是立即恢复?或者我可以在这个主题上开始一个单独的SO问题。当然,删除索引比使用“按查询删除”进行删除更有效,因为后者是通过拍摄整个索引的快照来实现的&如果同时更改了任何文档,则会出现版本冲突。基本上,在逐查询删除中执行更多的检查和操作,而不是删除索引,我认为在使空间可用方面更是如此。至于如何删除文件的工作在引擎盖下,请参阅这个博客。谢谢你卡马尔。我喜欢你的博客链接,特别是关于删除的文档如何影响搜索性能的部分?这似乎表明查询性能最多会降低50%,而对于成本更高的查询则会降低。我倾向于按查询删除,但在做出决定之前,我会用实际数据进行测试。谢谢Kamal。我喜欢你要去的地方,尤其是这个选择不是一成不变的。我想知道你是否可以解释一下,在一个索引中使用deleteapi删除一天的文档,与删除整个索引相比,会有多糟糕。我可以在用户少的时候整晚都这样做 在集群上?发生这种情况时,集群是否无法添加日志,或者只是延迟添加日志?空间最终是否会恢复,即几天后,而不是立即恢复?或者我可以在这个主题上开始一个单独的SO问题。当然,删除索引比使用“按查询删除”进行删除更有效,因为后者是通过拍摄整个索引的快照来实现的&如果同时更改了任何文档,则会出现版本冲突。基本上,在逐查询删除中执行更多的检查和操作,而不是删除索引,我认为在使空间可用方面更是如此。至于如何删除文件的工作在引擎盖下,请参阅这个博客。谢谢你卡马尔。我喜欢你的博客链接,特别是关于删除的文档如何影响搜索性能的部分?这似乎表明查询性能最多会降低50%,而对于成本更高的查询则会降低。我倾向于按查询删除,但在做出决定之前,我会用实际数据对其进行测试。