elasticsearch - 使用Logstash在ElasticSearch中加载CSV

标签 elasticsearch logstash elastic-stack

我有一个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和Name以及Address的部分数据,接下来的两个记录包含第2行和第3行,但没有ID和Name

我怎样才能解决这个问题?我在文件解析中丢失了什么吗?

最佳答案

您尝试过multiline codec吗?

您应该在输入插件中添加以下内容:

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

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

关于elasticsearch - 使用Logstash在ElasticSearch中加载CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303531/

相关文章:

mongodb - 同步elasticsearch和mongodb

elasticsearch - 在camelCase中,kibana “Expect plugin ” id错误,但发现:apm_oss

logstash - 类型错误 : no implicit conversion of Integer into String

elasticsearch - 如何在Logstash中编写grok模式

nginx - Elasticsearch 2.4 节点未形成带有 ConnectTransportException 的集群

elasticsearch - 提取管道中我的文档字段的类型是什么?

elasticsearch - Elasticsearch 错误-[前缀]查询不支持[前缀]

php - 为什么我不能使用分析仪获得答案 'failed to find analyze'?

ubuntu - 无法在 Ubuntu 上将 ElasticSearch 作为服务运行

elasticsearch - 是否有命名/组织存储日志数据的 Elasticsearch 索引的约定?