elasticsearch bulkAPIで地味にはまる
elasticsearch 6.3が出たので、データ突っ込んで試してみるかと、index作ってデータを投入することに。 curl叩きながら、確認を進めてましたが、BulkAPIを使って、データを入れるときに、以下のようなエラーが出ました。
{"error":"ActionRequestValidationException[Validation Failed: 1: no requests added;]","status":400}
400でvalidationなので、投げてる側の問題と判断して、BulkAPI用のJSONを眺めてみても、特にJSONとしてもelasticsearchとしても問題なさそう。
判明した原因は、curlで-d
を使っていたことでした。ドキュメントにも
If you’re providing text file input to curl, you must use the --data-binary flag instead of plain -d. The latter doesn’t preserve newlines.
curlなら--data-binary
を使ってくださいと書いてあり、-d
がこの省略形かと勘違いしていました。
create indexや検索など他のエンドポイントだと-d
でも通るのでなんでだろうと。
elasticsearchのドキュメントちゃんと書いてあってすごいですね。