elasticsearch parse_exception -请求正文是必需的

ws51t4hk  于 2023-01-25  发布在  ElasticSearch
关注(0)|答案(3)|浏览(507)

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

zpjtge221#

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

hyrbngr7

hyrbngr72#

我有这个同样的问题,在windows和张贴在这里的任何人遇到同样的问题,这个错误的参考。
{"错误":{"根本原因":[{"类型":"解析异常","原因":"请求正文是必需的"}],"类型":"解析异常","原因":"请求正文是必需的"},"状态":400}
我发现至少有两个原因:

  1. cURL不知道您尝试加载的文件在哪里:
    在这种情况下,请确保从文件所在的目录运行cURL。尝试执行以下命令并确保看到该文件。
    更多文件. json
  2. Windows命令行不支持cURL命令行中的单引号:
    • 糟糕**

curl-H '内容类型:应用程序/x-ndjson '-XPOST'本地主机:9200/_批量'--数据二进制'@file. json'

    • 好**

curl-H "内容类型:应用程序/x-ndjson "-XPOST"本地主机:9200/_批量"--数据二进制"@文件. json"

mf98qq94

mf98qq943#

我用引号把网址括起来解决了这个问题。

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

相关问题