我想将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
。
有什么办法可以做到这一点?谢谢。
答案 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的公开问题。因此在将来的版本中可能会出现。知道如何修改文件输入插件或编写自己的输入插件。