我目前正在运行Windows 10,并且在cmd.exe中使用curl_7_47_1_openssl_nghttp2_x64
,我的问题是每当我尝试在elasticsearch中使用批量API输入数据时,我总是会收到此错误:
Validation Failed 1: no requests added,
我已经研究过如何使用批量API正确发送数据(为每个输入添加新行),但cURL
不会读取我的断行语句。我的完整命令如下:
curl -XPOST localhost:9200/customer/external/_bulk?pretty --data-binary "{ \"index\": {\"_id\": \"1\"}} \n { \"name\": \"John Doe\" } \n {\"index\": {\"_id\": \"2\"}} \n {\"name\": \"Jane Doe\" }"
此外,其他信息包括:cURL
没有在Windows中读取单引号,我在jSON中转义双引号。
谢谢
答案 0 :(得分:3)
您有两种解决方案:
您可以将批量查询存储在文件中。确保:
\n
,而是一个真正的换行符) bulk.json
:
{"index": {"_id": "1"}}
{"name": "John Doe" }
{"index": {"_id": "2"}}
{"name": "Jane Doe" }
然后你可以运行这个命令
curl -XPOST localhost:9200/customer/external/_bulk?pretty --data-binary @/path/to/your/file
另一个解决方案是简单地内联您拥有的相同数据,但使用-d
参数而不是用于发送文件的--data-binary
发送它。
curl -XPOST localhost:9200/customer/external/_bulk?pretty -d "
{\"index\": {\"_id\": \"1\"}}
{\"name\": \"John Doe\" }
{\"index\": {\"_id\": \"2\"}}
{\"name\": \"Jane Doe\" }
"
再次确保在最后一行之后包含换行符