我使用描述在这里的机器学习方法将CSV数据上传到了Elasticsearch中。
这创建了一个具有csv预处理器的索引和管道。导入成功。
如果假设索引名为iislog
,管道名为iislog-pipeline
,则对应的curl命令行是什么?
我使用描述在这里的机器学习方法将CSV数据上传到了Elasticsearch中。
这创建了一个具有csv预处理器的索引和管道。导入成功。
如果假设索引名为iislog
,管道名为iislog-pipeline
,则对应的curl命令行是什么?
有另一种方法可以使用摄取管道将CSV插入弹性中,具体描述在这里:https://www.elastic.co/de/blog/indexing-csv-elasticsearch-ingest-node
最后,它将每行包装成一个json文档,并使用grok解析每行,以便将csv行映射到特定的文档字段。
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}'