elasticsearch 如果为空,请删除数组字段,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 如果为空,请删除数组字段,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 如果为空,请删除数组字段

elasticsearch 如果为空,请删除数组字段,elasticsearch,logstash,elasticsearch,Logstash,如果数组字段为空,请建议如何删除?我尝试了以下配置: if [tags] == [] { mutate { remove_field => ["tags"] } } But getting logstash exception: [2018-03-01T15:07:56,000][FATAL][logstash.runner ] The given configuration is invalid. Reason: Failed to parse right-hand side of c

如果数组字段为空,请建议如何删除?我尝试了以下配置:

if [tags] == [] {
mutate {
remove_field => ["tags"]
}
}

But getting logstash exception:
[2018-03-01T15:07:56,000][FATAL][logstash.runner ] The given configuration is invalid. Reason: Failed to parse right-hand side of conditional [str]pipeline:31:8:[tags] == []

我不知道如何从ruby过滤器中删除字段,因此当
标记
数组为空时,我将设置另一个字段,并使用来知道何时删除字段
标记

ruby {
    code => "event.set('[is_tags_empty]', 'true') if event.get('[tags]').length == 0"
}

if [is_tags_empty] {
    mutate {
        remove_field => ["tags","is_tags_empty"]
    }
}

这一个对我有用:

ruby {
  code => "if event.get('tags').length == 0 then event.remove('tags') end"
}

检查数组是否为空,以及数组是否为空

if [tags] and !([tags][0]) {
    mutate {
        remove_field => ["tags"]
    }
}

在Logstash 7.1上测试

我需要在Logstash中测试。链接建议在elasticsearch中执行。请建议我认为您必须使用ruby过滤器,我还没有找到其他方法。使用ruby代码,我无法检查数组是否为空并将其删除。如果发现一个方法为空?在ruby中,但不使用logstash ruby筛选器。请帮我翻译ruby代码片段。]成功了。。!非常感谢。:)什么是event.set event.get过来?我认为它的纯ruby程序在ruby过滤器的代码块中用双引号包装。我说的对吗?如果event.get(“[tags]”),那么这个
event.set(“[is_tags\u empty]”,true')。length==0
是ruby程序
event.get(“[tags]”)
从事件中检索字段
tags
event.set(“[is\u tags\u empty]”,'true')
将事件中的字段
is\u tags\u empty
设置为值
true
。有关事件的更多信息,请参阅