В PoC, который делается в нашем проекте, мы пытаемся использовать Logstash вместо нашего собственного модуля индексации на основе Java для передачи данных в ElasticSearch.Входящие данные JSON не имеют поля @timestamp
.Поэтому при использовании Logstash это поле добавляется в формате ISO.Но у нас уже есть определенное отображение для этого индекса ES, и для этого требуется, чтобы мы выдавали @timestamp
в формате epoch-millis.
Я пытался поиграть с фильтрами ruby, чтобы преобразовать @timestamp
в эпоху.-миллис, но пока не повезло.Есть ли какой-нибудь способ, которым мы можем загружать записи в ES через Logstash, когда @timestamp
находится в формате эпох-миллис?
Я использую logstash 6.5.4 и ES 6.2.2
Обновление : после опробования предложения в ответе мой файл conf выглядит следующим образом:
input { stdin { } }
filter {
ruby {
code => "
epoch_ts = event.timestamp.time.localtime.strftime('%s').to_i
event.set( 'epoch', epoch_ts )
"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "myindex"
script_type => "inline"
script => 'ctx._source.@timestamp = params.event.get("epoch")'
}
stdout { codec => rubydebug }
}
Но все равно это не работает.Значение @timestamp
не меняется вообще.Теперь мне также нужно удалить это дополнительное поле epoch
.