【问题标题】:parse_exception - request body is requiredparse_exception - 请求正文是必需的
【发布时间】:2020-02-16 11:31:25
【问题描述】:

我正在尝试在我的elasticsearch 实例中插入一个JSON 数据文件。

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"
   }
]

【问题讨论】:

标签: elasticsearch


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我在 Windows 中遇到了同样的问题,我在此处为遇到相同问题并引用此错误的任何人发布此问题。

    {"error":{"root_cause":[{"type":"parse_exception","re​​ason":"request body is required"}],"type":"parse_exception","re​​ason":"request正文是必需的"},"状态":400}

    我发现至少有两个原因:

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

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

    更多文件.json

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

    不好

    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"

    【讨论】:

      【解决方案3】:

      我通过用引号括起来解决了这个问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-08
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-13
        相关资源
        最近更新 更多