ELK logstash 无法在 ES 中创建索引



在遵循这个tuto(https://www.bmc.com/blogs/elasticsearch-logs-beats-logstash/(之后,为了使用logstash分析一些日志文件,我的索引在第一次就创建得很好,然后我想用新的过滤器和新的存储库重新索引新文件,所以我通过"curl XDELETE"删除了索引,现在当我重新启动logstash和filebeat时,索引不再创建。启动组件时我没有看到任何错误。 我是否需要删除其他内容才能重新创建索引?

好的,因为我的猜测(见评论(是正确的,这是解释:

为了避免 filebeat 一遍又一遍地读取和发布文件的行,它使用注册表来存储收割机的当前状态:

注册表文件存储 Filebeat 用来跟踪上次读取位置的状态和位置信息。

正如你所说,filebeat成功地收集了文件,将行发送到logstash,logstash将事件发布到elasticsearch,从而创建了所需的索引。由于 filebeat 更新了其注册表,因此无需收集更多行,因此即使您删除了索引,也不会再次发布任何事件来记录。当您插入一些新行时,filebeat 重新打开了收割机,并仅将新行(在"注册表检查点"之后(发布到 logstash。

注册表文件的默认位置是${path.data}/registry(请参阅 Filebeat 的目录布局概述(。

。也许 curl API 调用不是重新启动索引的最佳解决方案

这与删除索引无关。删除索引发生在 elasticsearch 中。Filebeat 不知道你在 elasticsearch 中的操作。

问:有没有办法基于旧日志重新创建索引?

是的,您应该考虑一些方法:

  • 您可以使用重新索引 API,该 API 将文档从一个索引复制到另一个索引。您可以更新文档,同时将它们重新索引到新索引中。
  • 与重新索引相反,您可以使用按查询更新 API 来更新将保留在原始索引中的文档。
  • 最后,您当然可以删除注册表文件。但是,这可能会导致数据丢失。但出于开发目的,我想这很好。

希望我能帮到你。

最新更新