elasticsearch 如果字段的密钥长度超过Logstash中的x个字符,是否删除字段?,elasticsearch,logstash,logstash-filter,elasticsearch,Logstash,Logstash Filter" /> elasticsearch 如果字段的密钥长度超过Logstash中的x个字符,是否删除字段?,elasticsearch,logstash,logstash-filter,elasticsearch,Logstash,Logstash Filter" />

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个字符的字段。虽然我可能会在将来改进
日志存储
解析,但这些问题不会持续下去,现在我想做一个类似于最后缝合的健全性检查。

尝试此过滤器,包括两个步骤:

  • 前缀kv字段,以便能够识别它们(此处可选)

  • 在此前缀字段上循环以应用条件(此处限制为包含30个前缀)


  • 使用以下两个步骤尝试此筛选器:

  • 前缀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
             "
           }
         }