elasticsearch 如何基于2个令牌之一将消息拆分为2个属性?,elasticsearch,logstash,elastic-stack,logstash-grok,logstash-file,elasticsearch,Logstash,Elastic Stack,Logstash Grok,Logstash File" /> elasticsearch 如何基于2个令牌之一将消息拆分为2个属性?,elasticsearch,logstash,elastic-stack,logstash-grok,logstash-file,elasticsearch,Logstash,Elastic Stack,Logstash Grok,Logstash File" />

elasticsearch 如何基于2个令牌之一将消息拆分为2个属性?

elasticsearch 如何基于2个令牌之一将消息拆分为2个属性?,elasticsearch,logstash,elastic-stack,logstash-grok,logstash-file,elasticsearch,Logstash,Elastic Stack,Logstash Grok,Logstash File,我认为这是一个简单的案例,但我在实施过程中遇到了一些问题 我的输入消息格式为:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;bbbbbbbbbbbb或aaaaaaaa:bbbbbbbbbbb我想做的是在冒号或分号上拆分,然后将它们分配给键和值对 我做了两次变异,但当我运行一些样本测试时,它出错了 mutate{

我认为这是一个简单的案例,但我在实施过程中遇到了一些问题

我的输入消息格式为:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;bbbbbbbbbbbb
aaaaaaaa:bbbbbbbbbbb
我想做的是在冒号或分号上拆分,然后将它们分配给键和值对

我做了两次变异,但当我运行一些样本测试时,它出错了

mutate{
  split => {
    "message" => ":"
  }
  add_field => {
    "key" => "%{[message][0]}"
    "value" => "%{[message][1]}"
  }
}
mutate{
  split => {
    "message" => ";"
  }
  add_field => {
    "key" => "%{[message][0]}"
    "value" => "%{[message][1]}"
  }
}
但我认为这是不对的。当时我正在深入研究grok,但不确定它是否就是这样工作的

我应该改为:

filter {
  grok {
    match => { "message" => "%{key}:%{value}" }
  }
  grok {
    match => { "message" => "%{key};%{value}" }
  }
}

我会用grok来做。试试这个:

grok { match => { "message" => "%{DATA:field1}[:;]%{GREEDYDATA:field2}" } }

我去看看是否行得通。我不确定匹配字符串是正则表达式还是有特定的条件。我会检查一下,然后再给你回复。:)