我正在尝试JSON在我的elasticsearch实例中插入一个数据文件。
curl -s -H “Content-Type: application/x-ndjson” -XPOST localhost:9200/_bulk —-data-binary “@restaurants.json”; echo
但是,在执行此命令后,我收到一条错误消息,指出
{"error":{"root_cause":[{"type":"parse_exception","reason":"request body is required"}],"type":"parse_exception","reason":"request body is required"},"status":400}
JSON 文件基本上具有以下对象的数组。唯一的问题是我在这里只放了一个对象以节省空间。但是,存在不止一个对象。
结构如下所示;
[
{
"address": {
"building": "351",
"coord": [
-73.98513559999999,
40.7676919
],
"street": "West 57 Street",
"zipcode": "10019"
},
"borough": "Manhattan",
"cuisine": "Irish",
"name": "Dj Reynolds Pub And Restaurant",
"grades": [
{
"date": {
"$date": "2014-09-06T00:00:00.000Z"
},
"grade": "A",
"score": 2
},
{
"date": {
"$date": "2013-07-22T00:00:00.000Z"
},
"grade": "A",
"score": 11
},
{
"date": {
"$date": "2012-07-31T00:00:00.000Z"
},
"grade": "A",
"score": 12
},
{
"date": {
"$date": "2011-12-29T00:00:00.000Z"
},
"grade": "A",
"score": 12
}
],
"id": "30191841"
}
]
Run Code Online (Sandbox Code Playgroud)
批量 API 要求每行一个文档,这意味着您的文档中不能有换行符。尝试从您提交的 JSON 中去除所有空格。您也只是提交文档流,而不是对象的 JSON 数组。请参阅此处的批量 API 文档:https : //www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
小智 6
我在 Windows 中遇到了同样的问题,并在此处为任何遇到相同问题并引用此错误的人发布此问题。
{"error":{"root_cause":[{"type":"parse_exception","reason":"请求正文是必需的"}],"type":"parse_exception","reason":"请求正文是必需的"},"状态":400}
我发现了至少两个原因:
在这种情况下,请确保从文件所在的目录运行 cURL。尝试执行以下命令并确保您看到该文件。
更多文件.json
坏的
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk' --data-binary '@file.json'
好的
curl -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/_bulk" --data-binary "@file.json"
| 归档时间: |
|
| 查看次数: |
27637 次 |
| 最近记录: |