gpt4 book ai didi

elasticsearch - Logstash-> Elasticsearch:如果较新则更新文档@timestamp,如果较旧则舍弃

转载 作者:行者123 更新时间:2023-12-02 22:39:07 26 4
gpt4 key购买 nike

使用elasticsearch output中的logstash,如何更新日志消息的@timestamp

我不想为整个文档重新编制索引,也不想为同一条日志消息编制两次索引。

另外,如果@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
}
}
}

它类似于 How to deduplicate documents while indexing into elasticsearch from logstash,但是我不想总是更新 message字段;仅当 @timestamp字段是最近的。

最佳答案

您无法从Logstash级别决定是否需要更新文档或什么都不要做,而这需要在Elasticsearch级别决定。这意味着您需要使用_update API进行实验和测试。

我建议看https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#upserts。这意味着,如果文档存在,则执行脚本(如果需要,可以在其中检查@timestamp),否则upsert的内容将被视为新文档。

关于elasticsearch - Logstash-> Elasticsearch:如果较新则更新文档@timestamp,如果较旧则舍弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38255647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com