删除事件字段并在 Logstash 中引用它
Remove an event field and reference it in Logstash
我想使用Logstash 将文档索引到Elasticsearch 中,并指定需要索引的文档的类型、id 等。如何在我的配置中指定那些而不在我的文档中保留无用的字段?
例子:我想指定用于插入的id:
input {
stdin {
codec => json {}
}
}
output {
elasticsearch { document_id => "%{[id]}" }
}
这将在 Elasticsearch 中插入 ID 为 id 的文档,但文档将在映射中保留冗余字段 "id"。我怎样才能避免这种情况?
我想添加
filter{ mutate { remove_field => "%{[id]}"} }
在配置中,但该字段已被删除,因此不能用作 document_id...
现在这是不可能的。 Logstash 1.5 引入了一个 @metadata 字段,其内容不包含在最终发送到输出的内容中,因此您可以创建一个 [@metadata][id] 字段并在输出中引用它,
output {
elasticsearch { document_id => "%{[@metadata][id]}" }
}
没有该字段污染索引到 Elasticsearch 的消息负载。见 @metadata documentation.
我想使用Logstash 将文档索引到Elasticsearch 中,并指定需要索引的文档的类型、id 等。如何在我的配置中指定那些而不在我的文档中保留无用的字段?
例子:我想指定用于插入的id:
input {
stdin {
codec => json {}
}
}
output {
elasticsearch { document_id => "%{[id]}" }
}
这将在 Elasticsearch 中插入 ID 为 id 的文档,但文档将在映射中保留冗余字段 "id"。我怎样才能避免这种情况?
我想添加
filter{ mutate { remove_field => "%{[id]}"} }
在配置中,但该字段已被删除,因此不能用作 document_id...
现在这是不可能的。 Logstash 1.5 引入了一个 @metadata 字段,其内容不包含在最终发送到输出的内容中,因此您可以创建一个 [@metadata][id] 字段并在输出中引用它,
output {
elasticsearch { document_id => "%{[@metadata][id]}" }
}
没有该字段污染索引到 Elasticsearch 的消息负载。见 @metadata documentation.