将CSV数据上传到Elasticsearch而不使用Logstash

3

我使用描述在这里的机器学习方法将CSV数据上传到了Elasticsearch中。

这创建了一个具有csv预处理器的索引和管道。导入成功。

如果假设索引名为iislog,管道名为iislog-pipeline,则对应的curl命令行是什么?

2个回答

3

3
csv 导入处理器只能用于包含 CSV 数据字段的 JSON 文档,不能使用 curl 传输原始的 CSV 数据。CSV 到 JSON 的转换是在 Kibana 中完成的(当你将原始 CSV 文件拖放到浏览器窗口时),然后 Kibana 才会发送 JSON 格式的 CSV 数据。如果您的 CSV 数据看起来像这样:
column1,column2,column3
1,2,3
4,5,6
7,8,9

Kibana将把每一行转换为

{"message": "1,2,3"}
{"message": "4,5,6"}
{"message": "7,8,9"}

那么,Kibana 将会通过 iislog-pipeline 转换每一个原始的 CSV/JSON 文档并发送到您的 iislog 索引中。该流程管道如下所示:

{
    "description" : "Ingest pipeline created by file structure finder",
    "processors" : [
      {
        "csv" : {
          "field" : "message",
          "target_fields" : [
            "column1",
            "column2",
            "column3"
          ],
          "ignore_missing" : false
        }
      },
      {
        "remove" : {
          "field" : "message"
        }
      }
    ]
}

最终,您的索引中的文档将如下所示:
{"column1": 1, "column2": 2, "column3": 3}
{"column1": 4, "column2": 5, "column3": 6}
{"column1": 7, "column2": 8, "column3": 9}

这就是它的工作方式。所以如果你想使用curl,你需要完成Kibana的预解析工作并发送后续文档。

curl -H 'Content-type: application/json' -XPOST iislog/_doc?pipeline=iislog-pipeline -d '{"column1": 1, "column2": 2, "column3": 3}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接