Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取logstash“指纹”过滤器以获取每个字段的源_Logstash_<img Src="//i.stack.imgur.com/A3TTx.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch Plugin - Fatal编程技术网 elasticsearch-plugin,Logstash,elasticsearch Plugin" /> elasticsearch-plugin,Logstash,elasticsearch Plugin" />

获取logstash“指纹”过滤器以获取每个字段的源

获取logstash“指纹”过滤器以获取每个字段的源,logstash,elasticsearch-plugin,Logstash,elasticsearch Plugin,我正在使用Logstash中的指纹过滤器创建一个指纹字段,我将其设置为elasticsearch输出中的document_id 配置如下: filter { fingerprint { method => "SHA1" key => "KEY" } } output { elasticsearch { host => localhost document_id => "%{fingerprint}" } } 默认情况下,

我正在使用Logstash中的指纹过滤器创建一个指纹字段,我将其设置为elasticsearch输出中的document_id

配置如下:

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

output {
  elasticsearch {
    host => localhost
    document_id => "%{fingerprint}"
  }
}

默认情况下,源是消息,但如何使其成为整个记录,而不仅仅是消息?注意,记录包含哪些字段取决于消息。

我认为使用指纹插件无法实现这一点。即使是concatenate_sources选项也无法识别所有字段,并且随着字段的更改,您无法手动将其设置为源

但是,您可能会考虑使用Ruby插件来计算关于所有字段的Sh1散列。以下内容可能会满足您的需要

filter { 
    ruby {
        init => "require 'digest/sha1'; require 'json'"
        code => "event['fingerprint'] = Digest::SHA1.hexdigest event.to_json"
    }
} 

我刚刚对它进行了测试,得到了关于所有字段的合适的SHA1哈希值。

我认为使用指纹插件无法实现这一点。即使是concatenate_sources选项也无法识别所有字段,并且随着字段的更改,您无法手动将其设置为源

但是,您可能会考虑使用Ruby插件来计算关于所有字段的Sh1散列。以下内容可能会满足您的需要

filter { 
    ruby {
        init => "require 'digest/sha1'; require 'json'"
        code => "event['fingerprint'] = Digest::SHA1.hexdigest event.to_json"
    }
} 

我刚刚对它进行了测试,得到了关于所有字段的合适SHA1哈希。

要添加到@hurb的解决方案中,使用Logstash 5.x,由于破坏性更改,以下内容似乎有效:

ruby {
  init => "require 'digest/sha1'; require 'json'"
  code => "event.set('fingerprint', Digest::SHA1.hexdigest(event.to_json))"
}

要添加到@hurb的解决方案中,由于破坏性的更改,使用Logstash 5.x,以下内容似乎起到了作用:

ruby {
  init => "require 'digest/sha1'; require 'json'"
  code => "event.set('fingerprint', Digest::SHA1.hexdigest(event.to_json))"
}

正是我想要的。因为我只是想消化整个过程,所以我将_json改为_s,并去掉了require'json'。这正是我想要的。因为我只想消化整个过程,所以我将_json改为_s,并去掉了require'json'。