elasticsearch 按模式从事件中删除字段,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 按模式从事件中删除字段,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 按模式从事件中删除字段

elasticsearch 按模式从事件中删除字段,elasticsearch,logstash,elasticsearch,Logstash,因此,我使用一个标准的ELK堆栈来分析Apache访问日志,这很好,但我希望使用KV过滤器将URL参数分解为字段,以便编写更好的查询 我的问题是,我正在分析的应用程序具有“缓存破坏”动态生成的参数,这导致成千上万个“字段”,每个字段只出现一次。ElasticSearch似乎有严重的问题,它们对我没有价值,所以我想删除它们。下面是该模式的一个示例 GET/page?rand123PQY=ABC&other\u var=something GET/page?rand987ZDQ=DEF&other

因此,我使用一个标准的ELK堆栈来分析Apache访问日志,这很好,但我希望使用KV过滤器将URL参数分解为字段,以便编写更好的查询

我的问题是,我正在分析的应用程序具有“缓存破坏”动态生成的参数,这导致成千上万个“字段”,每个字段只出现一次。ElasticSearch似乎有严重的问题,它们对我没有价值,所以我想删除它们。下面是该模式的一个示例


GET/page?rand123PQY=ABC&other\u var=something
GET/page?rand987ZDQ=DEF&other_var=something

在上面的示例中,我要删除的参数开始为“rand”。目前,my logstash.conf使用grok从访问日志中提取字段,然后使用kv提取查询字符串参数:


滤器{
格罗克{
path=>“/var/log/apache/access.log”
类型=>“apache访问”
}
千伏{
字段_split=>“&?”
}
}

是否有方法可以筛选出与模式匹配的任何字段
rand[a-Z0-9]*=[a-Z0-9]*
?我看到的大多数示例都是按确切名称定位字段,但我无法使用。我确实想知道如何将请求字段重新定义为一个新字段,在该字段上运行KV,然后将其删除。这行得通吗?

如果您感兴趣的字段集已知且定义良好,您可以为设置
目标,将感兴趣的字段移动到消息的顶层,并使用嵌套的键/值对删除该字段。我想这差不多就是你最后的建议

或者,您可以使用:


我知道这是有日期的,并且已经得到了答复,但对于2017年调查此事的任何人来说。有一个名为
prune
的插件,允许您根据不同的标准(包括模式)进行修剪

prune {
    blacklist_names => ["[0-9]+", "unknown_fields", "tags"]
}

完美的我不知道前面的全部字段集,但是您提供的ruby过滤器第一次起作用。我想我已经上下列出了一些过滤器来解决这个问题,但显然没有看到ruby过滤器。我怀疑我会再次使用它。
prune {
    blacklist_names => ["[0-9]+", "unknown_fields", "tags"]
}