我有一个带有1000个json对象的json文件。 有没有办法在每个json文档之前添加标题行?有最简单的方法吗?
示例:我有1000个像这样的对象
{"id":58,"first_name":"Louis","last_name":"Jordan","email":"ljordan1l@nature.com","gender":"Male","Latitude":"-15.93444","Longitude":"-50.14028"}
我想为每个json对象添加如下所示的索引标题,以便我可以在Elasticsearch Bulk api中使用
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "unique_id" } }
{"id":58,"first_name":"Louis","last_name":"Jordan","email":"ljordan1l@nature.com","gender":"Male","Latitude":"-15.93444","Longitude":"-50.14028"}
答案 0 :(得分:0)
如果您愿意使用Logstash,则无需修改文件,只需逐行阅读,并使用利用批量API的elasticsearch
输出将其流式传输到ES。
将以下Logstash配置存储在名为es.conf
的文件中(确保文件path
和ES hosts
符合您的设置):
input {
file {
path => "/path/to/your/json"
sincedb_path => "/dev/null"
start_position => "beginning"
codec => "json"
}
}
filter {
mutate {
remove_fields => ["@version", "@timestamp"]
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "test"
document_type => "type1"
document_id => "%{id}"
}
}
然后,您需要install logstash并且您将能够运行以下命令以将JSON文件加载到ES服务器:
bin/logstash -f es.conf
答案 1 :(得分:0)
我找到了在每个json文档之前添加标题行的最佳方法。 https://stackoverflow.com/a/30899000/5029432