卷曲请求不会将json放在索引中

时间:2013-08-30 14:31:33

标签: json curl elasticsearch

我正在尝试索引一些示例数据在Windows中我使用的是curl.exe程序,这是我使用的命令:

curl.exe -XPUT "http://localhost:9200/super_client/customer/1" -d '{
  "_id": "my_cust.client.12345",
  "client_oid": "12345",
  "client_name": "Taz",
  "flags": "['C2','C2','C3']",
  "user_ids": "1234567"
}'

签入在线json验证器后,JSON有效。该请求获得400。 顺便说一句,它确实创建了具有适当列的索引。虽然没有加载数据......

{
  "error": "MapperParsingException[failed to parse]; nested: JsonParseException[Unexpected character ('i' (code 105)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: [B@146c2f2; line: 1, column: 8]]; ",
  "status": 400
}
这是与windows有关的东西吗?我是否使用错误的PUT请求格式将数据索引到elasticsearch?

1 个答案:

答案 0 :(得分:3)

因为您的报价不正确嵌套。您需要转义JSON参数的内部引号(-d)。

"{\"_id\": \"my_cust...

将该字符串包装在单引号中也可能更容易('{"_id":...),但由于flags,您最终也会使用嵌套的单引号。但不确定为什么必须是字符串而不是数组。