2017-02-28 83 views
0

Elasticsearch中有兩種方法可以將兩個文檔關聯起來,基本上這樣說:「這兩個屬於一起」。Elasticsearch文檔關聯

例如,我希望能夠關聯屬於同一個流的TCP數據包,因此如果我得到一個SYN和一個SYN-ACK,我想說這兩個數據包是相互關聯的。

最後,我希望能夠說:「給我所有沒有相應的SYN-ACK的SYN數據包」。

任何幫助表示讚賞

編輯:通過logstash聚合也許餵養包會實現這一目標?然後我可以將數據包分組爲「流索引」?

回答

1

如果您通過Logstash加載TCP事件,則可以利用aggregate filter

例如,下面的過濾器配置會在每個SYN上創建一個合成事件,並在每個SYN-ACK上「釋放」它。你只需要確定一個字段some_unique_id,它將兩個數據包綁定在一起作爲相關的。此外請確保看到一個正確的timeout(這裏120秒)

filter {  
    if [type] == "SYN" { 
    aggregate { 
     task_id => "%{some_unique_id}" 
     map_action => "create" 
    } 
    } 

    if [type] == "SYN-ACK" { 
    aggregate { 
     task_id => "%{some_unique_id}" 
     map_action => "update" 
     end_of_task => true 
     timeout => 120 
    } 
    } 
} 
+0

謝謝,最終文件將是什麼樣子?當SYN-ACK進來時,做一個ES查詢會更好嗎?非常感激你的幫助.. – user98651