如何在弹性搜索中从logstash索引自定义字段?

时间:2015-12-31 10:09:29

标签: elasticsearch logstash elastic-stack

下面是我的logstash配置文件。

input {
  stdin{}
}  

filter {
  mutate {
    if(message =~ "*FF"){
    add_field => { "vname" => "olive" }
    }
    else{
    add_field => { "vname" => "popeye" }
    }
  }
}


output {
   stdout { codec => rubydebug }
   elasticsearch { 
            hosts => ["localhost:9200"]
            index => "servererrors"
        }
}

下图显示了我的kibana输出。

http://i.stack.imgur.com/pJANQ.png

问题是我需要过滤"橄榄"单独。正如您可以在主机字段中看到过滤器并过滤掉它,但它不适用于vname字段。

Filter Not available

以下是我对vname

的映射文件响应
"vname": {
            "type": "string",
            "store": true
          },

我对模板和映射感到困惑。请解释清楚。

2 个答案:

答案 0 :(得分:0)

添加"如果"声明和grok插件。您需要单独解析此事件。 如果您展示您的活动,我可以帮助您过滤。

答案 1 :(得分:0)

根据您最近的编辑,看起来您只是在语法上稍微倒退:

filter {
    if [myField] == "myValue" {
        mutate {
            add_field => { ... }
        }
    }
    else {
        mutate {
            add_field => { ... }
        }
    }
}