使用 curl 的弹性搜索批量插入不起作用

Elastic search batch insert using curl is not working

我正在 Elastic Search 集群上执行小型基准测试。我的基准测试脚本是用 bash 编写的并使用 curl.

我正在将数据写入我正在 post 到 REST 的文件 API:

curl -XPOST 'localhost:9200/benchmark/external/_bulk?pretty' \
     --data @$DATAFILE

我的 $DATAFILE 非常简单,所有换行符都已到位:

{"index":{"_id": "1"}}
{"data":"xxxxxxxxxx"}
{"index":{"_id": "2"}}
{"data":"xxxxxxxxxx"}
{"index":{"_id": "3"}}
{"data":"xxxxxxxxxx"}
...

但是当我尝试执行 post 时,我不断收到以下错误:

{
  "error" : "ActionRequestValidationException[Validation Failed: 1: no requests added;]",
  "status" : 400
}

我知道我的输入没有经过验证,但为什么?

curl 在发送数据之前删除了换行符!

--data参数应替换为--data-binary:

curl -XPOST 'localhost:9200/benchmark/external/_bulk?pretty' \
     --data-binary @$DATAFILE