Logstash:使用日志文件的行号作为document_id

时间:2018-10-07 14:32:45

标签: elasticsearch logstash

我想将Logstash的document_id设置为日志文件的行号,如下所示:(仅供参考,here显示了为什么需要这样做)

elasticsearch { 
    host => yourEsHost
    cluster => "yourCluster"
    index => "logstash-%{+YYYY.MM.dd}"
    document_id => "%{lineNumber}"
} 

例如,如果日志文件是:

64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1" 200 7352
64.242.88.10 - - [07/Mar/2004:16:20:55 -0800] "GET /twiki/bin/view/Main/DCCAndPostFix HTTP/1.1" 200 5253

我希望3个文档中的document_id分别为0、1、2。

在我的场景中,仅从一个日志文件生成一个Elasticsearch索引。这样可以保证不会在一个索引中重复这样的document_id

有什么办法可以做到这一点?谢谢。

1 个答案:

答案 0 :(得分:1)

根据此处的答案:https://discuss.elastic.co/t/get-line-number-of-the-log-file-line-being-processed/40960,目前尚不可能。但是有一个关于https://github.com/logstash-plugins/logstash-input-file/issues/7的公开问题。因此在将来的版本中可能会出现。知道如何修改文件输入插件或编写自己的输入插件。