elasticsearch 如何让Elasticsearch从文件的第一行获取列名?,elasticsearch,logstash,logstash-grok,logstash-configuration,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash Configuration,Logstash File" /> elasticsearch 如何让Elasticsearch从文件的第一行获取列名?,elasticsearch,logstash,logstash-grok,logstash-configuration,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash Configuration,Logstash File" />

elasticsearch 如何让Elasticsearch从文件的第一行获取列名?

elasticsearch 如何让Elasticsearch从文件的第一行获取列名?,elasticsearch,logstash,logstash-grok,logstash-configuration,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash Configuration,Logstash File,我刚开始使用Elasticsearch/logstash 我有3个具有公共id的不同文件。每个文件的第一行都包含列名,例如: header1,header2,header3,header4 1234,data2,data3,data4 1235,data2,data3,data4 1236,data2,data3,data4 如何让Elasticsearch获取第一行作为列名 另外,如何使用文件之间的公共id进行弹性研究,例如q:column=data group by id?看起来您有csv

我刚开始使用Elasticsearch/logstash

我有3个具有公共id的不同文件。每个文件的第一行都包含列名,例如:

header1,header2,header3,header4
1234,data2,data3,data4
1235,data2,data3,data4
1236,data2,data3,data4
如何让Elasticsearch获取第一行作为列名


另外,如何使用文件之间的公共id进行弹性研究,例如
q:column=data group by id

看起来您有csv数据。Logstash提供了一个csv过滤器,但它不处理标题行


有一个新的,但它被列为尚未准备好生产。

您可以在.confgig文件中添加下面提到的代码。您必须在配置文件中明确提到列名

filter {
csv {
    columns => [
      "YearMonth",
      "ProjectCode",
      "EmpNo",
      "RevenueCreditUnit",
      "Revenue",
      "dtLoad"

    ]
    separator => ","
    remove_field => ["message"]
    }
}

继续搜索,可能会有更好的方法。

其他答案在CSV过滤器插件版本3.0.8时已经过时(可能更早)。现在您可以执行以下操作:

过滤器{
csv{
自动检测列名称=>true
}
}

如果它不能按预期工作,您必须将
pipeline.workers:1
添加到
logstash.yml
文件中

见: