用于字提取的Logstash配置

用于字提取的Logstash配置,logstash,elastic-stack,logstash-configuration,Logstash,Elastic Stack,Logstash Configuration,我是个新手,不知道如何做下面的事情。 我有一个样本数据如下: Column:Type Incident Response P3 Incident Resolution L1.5 P2 ... 我想将“响应”和“解决”两个词提取到一个新的列“SLA类型” 我正在寻找与以下SQL语句非常相似的内容: case when Type like '%Resolution%' then Resolution when Type like '%Response%' then Response end a

我是个新手,不知道如何做下面的事情。 我有一个样本数据如下:

Column:Type
Incident Response P3
Incident Resolution L1.5  P2
...
我想将“响应”和“解决”两个词提取到一个新的列“SLA类型”

我正在寻找与以下SQL语句非常相似的内容:

case when Type like '%Resolution%' then Resolution
when Type like '%Response%' then Response 
end as SLA_Type
我如何在Logstash中处理这个

下面是我的配置。我正在使用API输入

input {

http_poller {
    urls => {
    snowinc => {
    url => "https://service-now.com"
    user => "your_user"
    password => "yourpassword"
    headers => {Accept => "application/json"}
    }
}
request_timeout => 60
metadata_target => "http_poller_metadata"
schedule => { cron => "* * * * * UTC"}
codec => "json"
}
}
filter
   {
   json {source => "result" }
   split{ field => ["result"] }
date {
  match => ["[result][sys_created_on]","yyyy-MM-dd HH:mm:ss"]
  target => "sys_created_on"
     }
}
output {
  elasticsearch {
    hosts => ["yourelastuicIP"]
    index => "incidentsnow"
    action=>update
    document_id => "%{[result][number]}"
    doc_as_upsert =>true
}
        stdout { codec => rubydebug }
}
API json url的输出如下所示:

{"result":[
{
"made_sla":"true",
"Type":"incident resolution p3",
"sys_updated_on":"2019-12-23 05:00:00",
"number":"INC0010275",
"category":"Network"} ,
{
"made_sla":"true",
"Type":"incident resolution l1.5 p4",
"sys_updated_on":"2019-12-24 07:00:00",
"number":"INC0010567",
"category":"DB"}]}

如果一个单词出现在另一个字段中,您可以在管道中使用以下
过滤器
块来添加新字段

if "response" in [Type] {
    mutate {
        add_field => { "SLA_Type" => "Response" }
    }
}
if "resolution" in [Type] {
    mutate {
        add_field => { "SLA_Type" => "Resolution" }
    }
}

如果单词response出现在字段
Type
中,将在文档中添加一个名为
SLA_Type
的新字段,其值为
response
,同样的情况也会发生在
分辨率

中。如果一个单词出现在另一个字段中,您可以在管道中使用以下
过滤器
块来添加新字段

if "response" in [Type] {
    mutate {
        add_field => { "SLA_Type" => "Response" }
    }
}
if "resolution" in [Type] {
    mutate {
        add_field => { "SLA_Type" => "Resolution" }
    }
}

如果单词response出现在字段
Type
中,将在文档中添加一个名为
SLA_Type
的新字段,该字段的值为
response
,在
分辨率
中也会出现同样的情况。数据是这样的吗<代码>事件
总是在
响应
解决方案
之前出现?如果是这样的话,
/^Incident\b([\w]+)\b/gm
应该会让您满意。澄清我的上述问题并添加更多数据。我可以编写一个
conf
文件,向您显示
过滤器
@JBone,我的输出不一定总是按照相同的顺序,这就是我只想挑出单词的原因。我已经附上了我的conf文件和来自API URL的示例数据集,还有我的问题。数据是这样的吗<代码>事件
总是在
响应
解决方案
之前出现?如果是这样的话,
/^Incident\b([\w]+)\b/gm
应该会让您满意。澄清我的上述问题并添加更多数据。我可以编写一个
conf
文件,向您显示
过滤器
@JBone,我的输出不一定总是按照相同的顺序,这就是我只想挑出单词的原因。我已经附上了我的conf文件和API URL中的示例数据集以及我的问题。