具有两个表结构的CSV的Logstash配置

时间:2016-11-21 20:47:22

标签: csv elasticsearch logstash

我正在尝试使用logstash加载一组CSV文件。 CSV文件包含两个表,其中只有第二个表是我感兴趣的。有关如何跳过第一个表中的条目的任何建议? (说出CSV文件的前50行)

我当前的conf文件如下所示:

input{
    file{
        path => "/home/username/pathtoData/*"
        start_position => beginning
    }
}
filter{
    csv{
        columns => ["col_name_a", "col_name_b", ...]
        separator => ","
    }
}
output{
    elasticsearch{
        hosts => ["localhost:portnum"]
    }
}

1 个答案:

答案 0 :(得分:0)

您没有指定两个数据集的结构,但我们假设您有一些方法可以区分它们。例如,您可以使用regular expression that counts the number of commas

假设任何包含5个逗号的列都是您不想要的。您可以有条件地将这些行发送到drop过滤器:

filter {
    if [message] =~ /^([^,]*,){5}[^,]*$/ {
        drop {}
    }
}

或者,您可以删除任何没有正好7个逗号的列:

filter {
    if [message] !~ /^([^,]*,){7}[^,]*$/ {
        drop {}
    }
}

如果您需要更精细的过滤,可以使用grok过滤器更仔细地检查每一行。只要您有一些可以过滤的条件,就可以使用条件来drop您不想要的行。