我正在使用Logstash中的fingerprint
过滤器创建指纹字段,我在document_id
输出中设置为elasticsearch
。
配置如下:
filter {
fingerprint {
method => "SHA1"
key => "KEY"
}
}
output {
elasticsearch {
host => localhost
document_id => "%{fingerprint}"
}
}
这导致Elasticsearch中的冗余fingerprint
字段与_id
的值相同。如何防止将此冗余字段保存到ES?
答案 0 :(得分:6)
如果您使用的是logstash 1.5或更高版本,则可以将字段放在metadata中,然后不会将其作为常规消息的一部分发送到elasticsearch。
filter {
fingerprint {
...
target => "[@metadata][fingerprint]"
}
}
output {
elasticsearch {
...
document_id => "%{[@metadata][fingerprint]}"
}
}
答案 1 :(得分:-1)
您可以将document_id
设置为fingerprint target
filter {
fingerprint {
method => "SHA1"
key => "KEY"
target => "document_id"
}
}