if语句- csv字段的测试值- Filter语言 - Logstash



我需要设置一个logstash配置文件导出导入csv文件弹性搜索。我的问题是,我不知道如何在if语句中评估csv字段。我有一个字段"call_type"我想把它格式化成这样:

 if ["call_type"] == "([a-z][A-Z][ ])*[dD]ata([a-z][A-Z][ ])*"
mutate 
{
 replace => ["call_type", "data" ]
}  }  else if ["call_type"] =~ "([a-z][A-Z][ ])*[vV]oix([a-z][A-Z][ ])*"
{
mutate 
{
replace => ["call_type", "voice" ]
}
}
else if ["call_type"] =~ "([a-z][A-Z][ ])*[sS]ms([a-z][A-Z][ ])*"
{
mutate
{
replace => ["call_type", "sms" ]
}  
}

"call_type"对于if语句语法来说是未知的。有人知道if语句的语法吗

您的代码片段有几个错别字。

if ["call_type"] =~ "([a-z][A-Z][ ])*[sS]ms([a-z][A-Z][ ])*"

如果你这样做:

if ["call_type"] == "([a-z][A-Z][ ])*[dD]ata([a-z][A-Z][ ])*"

比较字符串字面值而不是正则表达式。

你漏掉了第一个if的起始引号。如果你修复这些,它应该工作假设你的正则表达式是正确的…

感谢您的发言。我发现了我的错误。它来自这里的双引号:["call_type"]。

在if语句中选择csv字段值的正确语法是[call_type]。

 if [call_type] =~ "([a-z][A-Z][ ])*[dD]ata([a-z][A-Z][ ])*"
{
mutate 
{
 replace => ["call_type", "data" ]
}  
}
else if [call_type] =~ "([a-z][A-Z][ ])*[vV]oix([a-z][A-Z][ ])*"
{
mutate 
{
  replace => ["call_type", "voice" ]
}
}
else if [call_type] =~ "([a-z][A-Z][ ])*[sS]ms([a-z][A-Z][ ])*"
{
mutate
{
  replace => ["call_type", "sms" ]
}  
} 

相关内容

  • 没有找到相关文章

最新更新