簡體   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