elasticsearch 在Elasticsearch中插入交叉索引以消除重复项,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" /> elasticsearch 在Elasticsearch中插入交叉索引以消除重复项,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" />

elasticsearch 在Elasticsearch中插入交叉索引以消除重复项

elasticsearch 在Elasticsearch中插入交叉索引以消除重复项,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack,我有一个logstash配置,它在输出块中使用以下内容,试图减少重复 output { if [type] == "usage" { elasticsearch { hosts => ["elastic4:9204"] index => "usage-%{+YYYY-MM-dd-HH}" doc

我有一个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工作交叉索引?这些都是相同类型的文档,它们只会应用于与“用法-*”匹配的每个索引。

新索引是一个全新的键空间,无法告诉ES不在两个不同索引中索引具有相同ID的两个文档

但是,您可以通过向管道中添加一个索引来防止这种情况,该管道将在所有索引中查找文档,如果它找到一个索引,则可能会删除该事件

这样做可以(请注意,
usages
将是一个跨越所有
usage-*
索引的别名):


我注意到集群上的负载在安装好之后增加了很多。但到目前为止,它似乎正在发挥作用!是的,因为现在对于通过Logstash的每个事件,都会对您的ES进行查询,以验证该事件是否已经存在。为了减少搜索空间,我添加了一个ruby筛选器以获取昨天的日期。我只担心索引名滚动到第二天时可能出现的重复。但是,在elasticsearch筛选器中,它似乎没有展开字段:
elasticsearch{hosts=>[“fmyelastic04.fm.intel.com:9204”]index=>'监视cama使用情况-“%{[@metadata][beday]}”query=>“\u id:%{[@metadata][fingerprint]}”字段=>{{u id=>“id_found”}
HI@anthozep,在我的例子中,request get publish to dayed index和response get publish to dayed index。所以我想在dayed index中将请求和响应关联起来。有什么建议吗?
filter {
    elasticsearch {
        hosts => ["elastic4:9204"]
        index => "usages"
        query => "_id:%{[@metadata][fingerprint]}"
        fields => {"_id" => "other_id"}
    }
    # if the document was found, drop this one
    if [other_id] {
        drop {}
    }
}