如何从elasticsearch中排除"指纹"字段

ant*_*tak 1 elasticsearch logstash

我正在使用fingerprintLogstash中的过滤器来创建我在输出中设置的指纹字段.document_idelasticsearch

配置如下:

filter {
  fingerprint {
    method => "SHA1"
    key => "KEY"
  }
}

output {
  elasticsearch {
    host => localhost
    document_id => "%{fingerprint}"
  }
}
Run Code Online (Sandbox Code Playgroud)

这导致fingerprintElasticsearch 中的冗余字段具有与之相同的值_id.如何防止将此冗余字段保存到ES?

Ala*_*ins 6

如果您使用的是logstash 1.5或更高版本,则可以将字段放在元数据中,然后不会将其作为常规消息的一部分发送到elasticsearch.

例:

filter {
  fingerprint {
    ...
    target => "[@metadata][fingerprint]"
  }
}

output {
  elasticsearch {
    ...
    document_id => "%{[@metadata][fingerprint]}"
  }
}
Run Code Online (Sandbox Code Playgroud)