elasticsearch Logstash->;Elasticsearch:更新文档@时间戳(如果较新),如果较旧则放弃
使用
elasticsearch Logstash->;Elasticsearch:更新文档@时间戳(如果较新),如果较旧则放弃,
elasticsearch,logstash,
elasticsearch,Logstash,使用logstash中的elasticsearch输出,如果日志消息较新,如何仅更新@时间戳 我不想对整个文档重新编制索引,也不想对同一日志消息编制两次索引 此外,如果@timestamp较旧,则不得更新/替换当前版本 目前,我正在这样做: filter { if ("cloned" in [tags]) { fingerprint { add_tag => [ "lastlogin" ] key =>
logstash
中的elasticsearch输出
,如果日志消息较新,如何仅更新@时间戳
我不想对整个文档重新编制索引,也不想对同一日志消息编制两次索引
此外,如果@timestamp
较旧,则不得更新/替换当前版本
目前,我正在这样做:
filter {
if ("cloned" in [tags]) {
fingerprint {
add_tag => [ "lastlogin" ]
key => "lastlogin"
method => "SHA1"
}
}
}
output {
if ("cloned" in [tags]) {
elasticsearch {
action => "update"
doc_as_upsert => true
document_id => "%{fingerprint}"
index => "lastlogin-%{+YYYY.MM}"
sniffing => true
template_overwrite => true
}
}
}
它与类似,但我不想总是更新
消息
字段;仅当@timestamp
字段较新时。您无法从日志存储级别决定是否需要更新文档或不执行任何操作,这需要在Elasticsearch级别决定。这意味着您需要使用\u update
API进行实验和测试
我建议你看看。也就是说,如果文档存在,则执行脚本(如果需要,您可以在脚本中检查@timestamp
),否则upsert
的内容将被视为新文档