2017-02-28 41 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