1

我刚开始使用 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

4

3 回答 3

2

从 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

于 2018-07-12T23:50:24.193 回答
1

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

有一个新的csv 编解码器,但它被列为尚未准备好生产。

于 2016-02-08T16:57:33.917 回答
0

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

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

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

继续寻找,也许有更好的方法。

于 2016-09-02T08:17:26.547 回答