問題重制
輸入指令
curl -XPOST -H 'Content-Type:application/json' 'xxxx:9200/bank/account/_bulk?pretty' -d "./acc.json"
報了如下的錯誤:
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "The bulk request must be terminated by a newline [\n]"
}
],
"type" : "illegal_argument_exception",
"reason" : "The bulk request must be terminated by a newline [\n]"
},
"status" : 400
}
解決曆程
1,按照報錯更改json檔案,在json檔案最後加入了一個回車,增加了一個新行,執行指令,依然報相同錯
2,嘗試修改我的指令,修改後成為:
curl -XPOST -H 'Content-Type:application/json' 'xxxx:9200/bank/account/_bulk?pretty' --data-binary "./acc.json"
因為查到了,加載json檔案時如果使用普通的-d方法加載檔案會造成空行被忽略,也就是說我們加上去的新行并沒有起作用,–data-binary資料二進制格式的加載方式,可以保證我們的空行還在,但是執行之後依然報錯,相同的錯
3,有點郁悶了,又查找一番,發現指令還存在錯誤,經修改如下:
curl -XPOST -H 'Content-Type:application/json' 'xxxx:9200/bank/account/_bulk?pretty' --data-binary "@acc.json"
發現,書寫檔案路徑時,必須要以@開頭,而不是平常的./或/等,至此檔案成功加載,在head中也發現了資料,完美
注:指令中最後檔案路徑的雙引号不必要,–data-binary @acc.json ,也一樣可以成功執行指令