elasticsearch 如何让Elasticsearch从文件的第一行获取列名?
我刚开始使用Elasticsearch/logstash 我有3个具有公共id的不同文件。每个文件的第一行都包含列名,例如: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
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
文件中
见: