vectorize.upstream_error - 无法解析 ndjson 格式的 upsert 矢量请求:第 Some(0) 行不是预期格式

问题描述 投票:0回答:1

我正在尝试在我的 cloudflare 矢量化索引中更新插入一个矢量 现在我正在使用 cURL 从我的终端进行测试 我打的电话是这样的:

curl -v --request POST   --url https://api.cloudflare.com/client/v4/accounts/my_account_id/vectorize/v2/indexes/c1-vectorize/upsert   --header 'Authorization: Bearer redacted'   --header 'Content-Type: application/x-ndjson'   --data @vector-data-clean-utf8.ndjson

这是 vector-data-clean-utf8.ndjson 文件的样子:

{"id":"s4444","values":[175.1, 167.1, 129.9],"metadata":{"url":"/products/sku/918318313"}} {"id":"5555","values":[158.8, 116.7, 311.4],"metadata":{"url":"/products/sku/183183183"}} {"id":"6666","values":[113.2, 67.5, 11.2],"metadata":{"url":"/products/sku/717313811"}}

这正是 cloudflare 页面矢量化页面上的示例 ndjson 文件。 然而,无论我尝试什么变化,我都会收到此错误:

"errors": [ { "code": 40023, "message": "vectorize.upstream_error - failed to parse upsert vectors request in ndjson format: line Some(0) was not expected format" } ]

该错误没有提供更多详细信息,因此我试图了解如何克服这个问题。

感谢任何帮助,因为我在这个问题上找不到太多帮助。

问候

清理文件中的空格,修剪它 确保文件末尾或文件开头没有换行符 检查文件类型,将其从 us-ascii 更改为 utf-8 尝试使用普通的 JSON 文件,也没有成功

vectorization cloudflare cloudflare-workers cloudflare-r2 wrangler
1个回答
0
投票

看起来 Cloudflare 文档中的示例不正确,我创建了索引,但也无法上传 NDJSON 文件。

经过一些研究,我发现要上传 NDJSON 文件,应该使用

--data-binary
选项。这是因为 NDJSON 代表“Newline Delimited JSON”,而curl选项
--data
从文件中删除换行符

基于此,我的

curl
请求如下:

curl --request POST \
  --url https://api.cloudflare.com/client/v4/accounts/my_account_id/vectorize/v2/indexes/c1-vectorize/upsert \
  --header 'Authorization: Bearer redacted' \
  --header 'Content-Type: application/x-ndjson' \
  --data-binary @/tmp/data

我的 /tmp/data 看起来像:

{"id": "4444", "values": [0.12, 0.34, 0.56], "metadata": {"url": "/products/sku/918318313" }}
{"id": "4443", "values": [0.12, 0.38, 0.74], "metadata": {"url": "/products/sku/918318314" }}

Cloudflare 的回应是:

{
  "result": {
    "mutationId": "b66e7281-c65e-47b6-87e8-c05a06c422ec"
  },
  "success": true,
  "errors": [],
  "messages": []
}
© www.soinside.com 2019 - 2024. All rights reserved.