【问题标题】:Add documents to elasticsearch if it does not exists如果文档不存在,则将文档添加到 elasticsearch
【发布时间】:2019-12-31 17:23:58
【问题描述】:

我使用logstash将每天生成的日志中的一些数据传输到elasticsearch,我的logstash输出部分如下所示:

我在我的日志文件和elasticsearch中都保留了相同的id(id_ot),但我想做的是:如果新的id(id_ot)已经存在于elasticseach中,那么我不会插入它。我如何在 logstash 中做到这一点?

任何帮助都会非常感激!

【问题讨论】:

    标签: elasticsearch logstash logstash-file


    【解决方案1】:

    您只需添加action => create parameter,如果已存在具有该 ID 的文档,则不会对其编制索引

    output {
      elasticsearch {
        ...
        action => "create"
      }
    }
    

    【讨论】:

    • 谢谢瓦尔。这就是我所需要的。问候
    • Val,如果我可以问你另一个问题:我实现了 ILM 来管理看起来像这样的数据:
    • Mohamed,让我们结束这个问题并创建一个新问题,这样我们就不会在这个线程中塞进太多不相关的主题,谢谢
    【解决方案2】:

    您要求的是 upsert ,如果不存在则创建文档或更新现有文档。 elastic 通过doc_as_upsert 选项支持这一点

    https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#doc_as_upsert

    在链接的右侧,您可以选择与您的版本相匹配的弹性版本。

    【讨论】:

    • doc_as_upsert 如果文档不存在则创建文档。但如果它存在 - 它将更新文档。 OP不想更新现有的但只想创建。所以瓦尔的答案是正确的。 create 操作不会更新现有的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多