繁体   English   中英

ELK logstash 无法在 ES 中创建索引

[英]ELK logstash cant create index in ES

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

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

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

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

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

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

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

这与删除索引无关。 删除索引发生在 elasticsearch 内部。 Filebeat 对您在 elasticsearch 中的操作一无所知。

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

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

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

希望我能帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM