我正在尝试索引一些示例数据在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?
答案 0 :(得分:3)
因为您的报价不正确嵌套。您需要转义JSON参数的内部引号(-d
)。
"{\"_id\": \"my_cust...
将该字符串包装在单引号中也可能更容易('{"_id":...
),但由于flags
,您最终也会使用嵌套的单引号。但不确定为什么必须是字符串而不是数组。