2015-04-28 50 views
0

我目前有大量由Logstash分析的日誌文件,因此在Elasticsearch中使用了相應的空間量。 但是,很多這些數據對我來說都沒用,因爲一切都沒有在Kibana中顯示。減少elasticsearch的索引大小

所以我想知道:有沒有辦法保持索引大小最小,只存儲匹配事件?

編輯:也許我不清楚我想達到什麼目的。我有幾個日誌屬於不同的類別(因爲它們沒有達到相同的目的,也沒有以相同的方式構建)。我創建了幾個與這些不同類型的日誌相對應的過濾器配置文件。

目前,我所有日誌中的所有數據都存儲在Elasticsearch中。例如,假設我在其中一個日誌中查找文本「cat」,則包含「cat」的事件將被存儲,但其他10,000行也會存儲。我想避免這種情況,只將這1個事件存儲在Elasticsearch的索引中。

回答

2

您還沒有真正提供足夠的信息,但是當我看到它有兩個選擇時,您可以更新logstash過濾器,以便只將感興趣的數據發送到elasticsearch。您可以通過將conditional邏輯設置爲「drop {}」某些事件來完成此操作。或者您可以使用mutate {remove_field}去除特定事件中的單個字段。

另一種選擇是關閉/刪除彈性搜索數據庫中的舊索引,這會減少佔用堆空間的信息量,並且會立即生效,而我的第一個選項只會影響將來的日誌。關閉/刪除舊索引的最簡單方法是使用curator

編輯:

從你的另一個問題,我建議:

  • 您的輸入,添加一個標籤,如「水滴」所有的輸入
  • 由於每個grok你可以刪除的部分一個成功匹配的標籤,所以當grok工作時,刪除放置標籤
  • 作爲輸出的一部分,將條件邏輯放在輸出的周圍,這樣只有 可以保存沒有放置標籤的記錄,例如:

output { if "drop" not in [tags] { etc } }

+0

我@Rumbles同意給予提供的一些信息,這將是你可以考慮的解決方案! – eliasah

+0

請原諒我沒有提供太多的信息,但我基本上在我的日誌文件中有幾行我不需要,我只是想控制Elasticsearch中存儲的內容。我希望我的ES索引只包含與我創建的正則表達式匹配的文本。我感謝你的建議,但問題是我有幾個不同類型的日誌文件的過濾器文件。一種類型可能不匹配的可能會匹配另一種類型。 – halpsb

+0

所以基本上我想要做的就是放棄任何與我的正則表達式無關的任何東西 – halpsb