如果文档不存在,则将文档添加到elasticsearch

Add documents to elasticsearch if it does not exists

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

我在我的日志文件和 elasticsearch 中保持相同的 ID (id_ot),但我想做的是:如果新的 ID (id_ot) 已经存在于 elasticseach 中,所以我不会插入它。我怎样才能在 logstash 中做到这一点?

非常感谢任何帮助!

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

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

您要的是更新插入,如果存在则创建文档或更新现有文档。 elastic 通过 doc_as_upsert 选项

支持这个

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

在link右边可以选择适合自己版本的elastic版本