parse_exception - 请求正文是必需的

时间:2018-01-06 05:56:39

标签: elasticsearch

我正在尝试在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"
   }
]

3 个答案:

答案 0 :(得分:4)

批量API每行需要一个文档,这意味着您的文档中不能有换行符。尝试从您提交的JSON中去除所有空格。您也只是提交文档流,而不是JSON对象数组。请参阅此处的批量API文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html

答案 1 :(得分:1)

我通过用引号将网址引起来来解决它。

curl  -s -H “Content-Type: application/x-ndjson” -XPOST "localhost:9200/_bulk —-data-binary “@restaurants.json”;

答案 2 :(得分:0)

我在Windows中也遇到了同样的问题,现在将其发布给所有遇到相同问题并提及此错误的人。

  

{“错误”:{“ root_cause”:[{“类型”:“ parse_exception”,“原因”:“要求正文”}],“类型”:“ parse_exception”,“原因”:“请求正文是必需的“},”状态“:400}

我发现至少两个原因:

  1. cURL不知道您要加载的文件在哪里:

在这种情况下,请确保从文件所在的目录运行cURL。尝试执行以下命令,并确保您看到该文件。

  

更多file.json

  1. Windows命令行在cURL命令行中不支持单引号:

  

curl -H'内容类型:application / x-ndjson'-XPOST'localhost:9200 / _bulk'--data-binary'@ file.json'

  

curl -H“内容类型:application / x-ndjson” -XPOST“ localhost:9200 / _bulk” --data-binary“ @ file.json”