Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elasticsearch: Bulk request throws error in Elasticsearch 6.1.1

Tags:

I recently upgraded to Elasticsearch version 6.1.1 and now I can't bulk index documents from a JSON file. When I do it inline, it works fine. Here are the contents of the document:

{"index" : {}} {"name": "Carlson Barnes", "age": 34} {"index":{}} {"name": "Sheppard Stein","age": 39} {"index":{}} {"name": "Nixon Singleton","age": 36} {"index":{}} {"name": "Sharron Sosa","age": 33} {"index":{}} {"name": "Kendra Cabrera","age": 24} {"index":{}} {"name": "Young Robinson","age": 20} 

When I run this command,

curl -XPUT 'localhost:9200/subscribers/ppl/_bulk?pretty' -H 'Content-Type: application/json' -d @customers_full.json 

I get this error:

"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 

It works fine if I send the data inline and in Elasticsearch 5.x. I tried adding newlines as well as the newline character to the end of the file. Doesn't seem to work.

like image 453
Judy T Raj Avatar asked Feb 02 '18 09:02

Judy T Raj


2 Answers

Add empty line at the end of the JSON file and save the file and then try to run the below command

curl -XPOST localhost:9200/subscribers/ppl/_bulk?pretty --data-binary @customers_full.json -H 'Content-Type: application/json' 
like image 114
Sathishkumar Rakkiyasamy Avatar answered Oct 08 '22 19:10

Sathishkumar Rakkiyasamy


As the document says: use the --data-binary flag instead of plain -d

-d doesn’t preserve newlines and doesn't format the json.

I faced this problem because of JSON formatting.

like image 41
Android14 Avatar answered Oct 08 '22 19:10

Android14