我需要设置一个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" ]
}
}