elasticsearch 如果字段的密钥长度超过Logstash中的x个字符,是否删除字段?
我有一个
elasticsearch 如果字段的密钥长度超过Logstash中的x个字符,是否删除字段?,
elasticsearch,logstash,logstash-filter,
elasticsearch,Logstash,Logstash Filter,我有一个logstash管道,可以将数据充分解析为JSON,进入elasticsearch;然而。。。有时它不能很好地解析字段,并找到非常奇怪的键和值,大多数情况下,这些键非常长,例如:aakgaaaaaaaaaaaababiofy1Mb… 我希望能够根据密钥在kv中的时间来删除这些字段。假设删除任何超过30个字符的字段。虽然我可能会在将来改进日志存储解析,但这些问题不会持续下去,现在我想做一个类似于最后缝合的健全性检查。尝试此过滤器,包括两个步骤: 前缀kv字段,以便能够识别它们(此处可选)
logstash
管道,可以将数据充分解析为JSON,进入elasticsearch
;然而。。。有时它不能很好地解析字段,并找到非常奇怪的键和值,大多数情况下,这些键非常长,例如:aakgaaaaaaaaaaaababiofy1Mb…
我希望能够根据密钥在
kv
中的时间来删除这些字段。假设删除任何超过30个字符的字段。虽然我可能会在将来改进日志存储
解析,但这些问题不会持续下去,现在我想做一个类似于最后缝合的健全性检查。尝试此过滤器,包括两个步骤:
使用以下两个步骤尝试此筛选器:
前缀键的作用是什么?因为没有前缀键,ruby中的循环会打开每个字段,而不仅仅是kv filter提供的字段。我知道point可能会在elasticsearsh中创建错误的字段名,所以您可以在ruby中删除此前缀以获得准确的字段名。无论如何,如果条件是大小(大于30-),则可以在kv过滤器和ruby中删除此前缀(首先是if)。前缀键的作用是什么?因为如果没有,ruby中的循环会打开每个字段,而不仅仅是kv filter提供的字段。我知道这一点可能会在elasticsearsh中创建错误的字段名,因此您可以在ruby中删除此前缀以获得准确的字段名。无论如何,如果条件是大小(如果是30-,您可以在kv过滤器和ruby中删除此前缀(如果是第一个)。
filter {
kv {
#Step 1
#prefix=>"kv_"
}
ruby {
code => "
hash = event.to_hash
hash.each do |key, value|
# Step 2
#if(key.to_s.start_with?('kv_'))
if(key.size>30)
event.cancel
end
#end
end
"
}
}