【问题标题】:How do I tell Elasticsearch to get the column names from the first line of a file?如何告诉 Elasticsearch 从文件的第一行获取列名?
【发布时间】:2016-05-17 04:09:10
【问题描述】:

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

【问题讨论】:

    标签: elasticsearch logstash logstash-grok logstash-configuration logstash-file


    【解决方案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】:

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

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

      【讨论】:

        【解决方案3】:

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

        filter {
        csv {
            columns => [
              "YearMonth",
              "ProjectCode",
              "EmpNo",
              "RevenueCreditUnit",
              "Revenue",
              "dtLoad"
        
            ]
            separator => ","
            remove_field => ["message"]
            }
        }
        

        继续搜索,也许有更好的方法。

        【讨论】:

          猜你喜欢
          • 2012-07-24
          • 1970-01-01
          • 1970-01-01
          • 2020-11-15
          • 2012-02-10
          • 2020-08-24
          • 2016-08-11
          • 1970-01-01
          • 2014-09-01
          相关资源
          最近更新 更多