我刚开始使用Elasticsearch / logstash。
我有3个不同的文件,共同的ID。每个文件都包含第一行的列名称,例如:
header1,header2,header3,header4
1234,data2,data3,data4
1235,data2,data3,data4
1236,data2,data3,data4
如何告诉Elasticsearch将第一行作为列名?
另外,如何使用文件之间的公共ID在Elastic中进行一些研究,例如q:column=data group by id
?
答案 0 :(得分:1)
看起来你有csv数据。 Logstash提供了一个csv过滤器,但它不处理标题行。
有一个新的csv codec,但它已被列为尚未准备好投放。
答案 1 :(得分:1)
从CSV过滤器插件版本 3.0.8 (可能更早)开始,其他答案已过时。现在您可以执行以下操作:
filter {
csv {
autodetect_column_names => true
}
}
万一它无法按预期工作,则必须将pipeline.workers: 1
添加到您的logstash.yml
文件中。
请参阅:https://github.com/logstash-plugins/logstash-filter-csv/issues/65
答案 2 :(得分:0)
您可以在.confgig文件中添加以下提到的代码。您必须在配置文件中明确提及列名。
filter {
csv {
columns => [
"YearMonth",
"ProjectCode",
"EmpNo",
"RevenueCreditUnit",
"Revenue",
"dtLoad"
]
separator => ","
remove_field => ["message"]
}
}
继续搜索,可能有更好的方法。