2016-01-21 224 views
0

我仍然需要解決問題,如何根據文檔字段告訴Logstash發送動態索引。此外,必須對該字段進行轉換,以便最終獲得「真實」索引。 鑑於有一個字段「時間」(這是一個UNIX時間戳)。這個字段已經被一個「日期」過濾器轉換爲Elastic的DateTime對象。 此外,它應該服務器作爲索引(YYYYMM)。該索引不應來自未觸及的@Timestamp。來自文檔字段的Logstash動態索引失敗

例子: {..., 「時間」:1453412341,...}

一起去索引:201601

我用下面的配置:

filter { 
    date { 
    match => [ "time", "UNIX" ] 
    target => "time" 
    timezone => "Europe/Berlin" 
    } 
} 
output { 
    elasticsearch { 
     index => "%{time}%{+YYYYMM}" 
     document_type => "..." 
     document_id => "%{ID}" 
     hosts => "..." 
    } 
} 

可悲的是,它不工作。任何想法,如何實現?

非常感謝!

回答

0

「%{+ YYYYMM}」表示使用@timestamp中的日期值。如果您想要在%{time}之後以YYYYMM命名的索引,則需要從該日期字段中創建一個字符串,然後在輸出節中引用該字符串。可能有一個mutate {}可以做到,或者放入ruby {}。

在大多數安裝中,您希望將@timestamp設置爲事件的值。 logstash自己的時間默認不是很有用(想象一下,如果你的事件在處理過程中延遲了一個小時)。如果你這樣做,那麼%{+ YYYYMM}「將工作得很好。

0

這是因爲默認情況下根據UTC時間創建的索引名稱。