【发布时间】:2016-12-10 00:25:07
【问题描述】:
我有一个 logstash 配置,它在输出块中使用以下内容来尝试减少重复。
output {
if [type] == "usage" {
elasticsearch {
hosts => ["elastic4:9204"]
index => "usage-%{+YYYY-MM-dd-HH}"
document_id => "%{[@metadata][fingerprint]}"
action => "update"
doc_as_upsert => true
}
}
}
指纹是根据两个唯一字段的 SHA1 哈希计算得出的。
当 logstash 在同一索引中看到相同的文档时,此方法有效,但由于生成输入数据的命令没有可靠的不同文档出现的速率,logstash 有时会在不同的日期标记索引中插入重复的文档.
例如,logstash 运行以获取输入的命令通常会返回最近两个小时的数据。但是,由于我无法确定文档何时出现/消失,因此我每十五分钟调整一次命令。
当重复发生在同一小时内时,这很好。但是,当小时或日期戳翻过去,文档仍然出现时,elastic/logstash 认为它是一个新文档。
有没有办法让 upsert 工作跨索引?这些都是相同类型的文档,它们将简单地应用于与“usage-*”匹配的每个索引
【问题讨论】:
标签: elasticsearch logstash elastic-stack