0

Basicfloat フィールドです。上記のインデックスはelasticsearchにはありません。で構成ファイルを実行するとlogstash -f、例外は発生しません。それでも、elasticsearch に反映されて入力されたデータは、Basicasのマッピングを示していstringます。これを修正するにはどうすればよいですか?そして、複数のフィールドに対してこれを行うにはどうすればよいですか?

input {  
      file {
          path => "/home/sagnik/work/logstash-1.4.2/bin/promosms_dec15.csv"
          type => "promosms_dec15"
          start_position => "beginning"
          sincedb_path => "/dev/null"
      }
}
filter {
    grok{
        match => [
            "Basic", " %{NUMBER:Basic:float}"
        ]
    }

    csv {
        columns => ["Generation_Date","Basic"]
        separator => ","
    }  
    ruby {
          code => "event['Generation_Date'] = Date.parse(event['Generation_Date']);"
    }

}
output {  
    elasticsearch { 
        action => "index"
        host => "localhost"
        index => "promosms-%{+dd.MM.YYYY}"
        workers => 1
    }
}
4

1 に答える 1

3

2 つの問題があります。まず、grok フィルターは csv フィルターの前にリストされます。フィルターが適用されるため、grok フィルターが適用されたときに変換する「基本」フィールドはありません。

次に、明示的に許可しない限り、grok は既存のフィールドを上書きしません。言い換えると、

grok{
    match => [
        "Basic", " %{NUMBER:Basic:float}"
    ]
}

常にノーオペレーションになります。mutateの型変換機能を指定するoverwrite => ["Basic"]か、できれば使用します。

mutate {
    convert => ["Basic", "float"]
}
于 2014-12-18T15:53:14.523 に答える