2

使用 Logstash,我想将文档索引到 Elasticsearch 并指定需要索引的文档的类型、id 等。如何在我的配置中指定那些而不在我的文档中保留无用的字段?

示例:我想指定用于插入的 id:

input {
    stdin {
        codec => json {}
    }
}

output {
    elasticsearch { document_id => "%{[id]}" }
}

这将在 Elasticsearch 中插入带有 id id的文档,但该文档将在映射中保留一个冗余字段“id”。我怎样才能避免这种情况?

我想添加

filter{ mutate { remove_field => "%{[id]}"} }

在配置中,但该字段已被删除,因此不能用作document_id ...

4

1 回答 1

4

目前这是不可能的。Logstash 1.5 引入了一个 @metadata 字段,其内容不包含在最终发送到输出的内容中,因此您可以创建一个 [@metadata][id] 字段并在输出中引用它,

output {
    elasticsearch { document_id => "%{[@metadata][id]}" }
}

没有该字段污染索引到 Elasticsearch 的消息有效负载。请参阅@metadata 文档

于 2015-04-28T10:09:47.960 回答