【问题标题】:Loading csv in ElasticSearch using logstash使用 logstash 在 ElasticSearch 中加载 csv
【发布时间】:2017-06-01 09:21:48
【问题描述】:

我有一个 csv,其中一列可能包含多行值。

ID,Name,Address
1, ABC, "Line 1
Line 2
Line 3"

上面根据 CSV 标准写入的数据是一条记录(据我所知)。

我有以下用于 logstash 的过滤器

filter {
  csv {
      separator => ","
      quote_char => "\""
     columns => ["ID","Name", "Address"]
  }
}
output {
   elasticsearch {
     host => "localhost"
     port => "9200"
     index => "TestData"
     protocol => "http"
  }
stdout {}
}

但是当我执行它时,它会创建三个记录。 (原则上都是错误的,因为第一个包含两列数据 ID 和名称以及地址的部分数据,接下来的两条记录包含第 2 行和第 3 行,但没有 ID 和名称

我该如何解决这个问题?我在文件解析中遗漏了什么吗?

【问题讨论】:

    标签: elasticsearch logstash elastic-stack


    【解决方案1】:

    你试过multiline codec吗?

    你应该在你的输入插件中添加这样的东西:

    codec => multiline {
          pattern => "^[0-9]"
          negate => "true"
          what => "previous"
        }
    

    它告诉 logstash 不是以数字开头的每一行都应该与前一行合并

    【讨论】:

    • 我选择了"^([0-9]+,)" 更具体一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2021-07-19
    • 1970-01-01
    • 2015-01-01
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多