OpenSearch-LLM智能问答版支持通过API的方式批量推送文档。
前提条件
接口信息
|
请求方法 |
请求协议 |
请求数据格式 |
|
POST |
HTTP |
JSON |
请求URL
{host}/v3/openapi/apps/[app_group_identity]/actions/knowledge-bulk
-
{host}:调用服务的地址,支持通过公网和VPC两种方式调用API服务,可参见获取服务调用地址。 -
{app_group_identity}:应用名称,需要登录OpenSearch-LLM智能问答版控制台,在实例管理中查看对应实例的应用名称。
请求参数
Header参数
|
参数 |
类型 |
是否必填 |
描述 |
示例值 |
|
Content-Type |
string |
是 |
请求的数据格式,目前仅支持JSON格式,固定填写"application/json"。 |
application/json |
|
Authorization |
string |
是 |
请求鉴权的API Key,Bearer开头。 |
Bearer OS-d1**2a |
Body参数
|
参数 |
类型 |
是否必填 |
描述 |
示例值 |
|
cmd |
string |
是 |
操作指令。 |
ADD/DELETE |
|
fields |
map |
是 |
字段组合。 |
|
|
fields.id |
string |
是 |
主键ID。 |
13579 |
|
fields.title |
string |
否 |
文档标题。 |
Something interesting |
|
fields.url |
string |
否 |
文档的链接。 |
https://www.aliyun.com |
|
fields.content |
string |
是 |
文档的内容。 |
No, is not. |
请求体示例
1、上传主表文档
['{
"cmd": "ADD",
"fields": {
"id": "13579",
"title": "Something interesting",
"url": "https://www.aliyun.com",
"content": "No, is not."
}
}']
上传非结构化文档(pdf/doc/txt/html)
['{
"cmd" : "URL/BASE64",
"fields": {
"id": "文档id(可选)",
"type": "文件类型,pdf/doc/txt/html...",
"title": "文件名(可选)",
"content": "URL/Base64编码数据",
"url": "链接(可选)"
}
}']
URL仅支持OSS的通过ossClient.generatePresignedUrl生成的数据访问URL
2、上传辅表
['{
"cmd" : "ADD",
"fields": { # 数据体,根据表格schema定义
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
"table_name": "辅表表名" # 表名,空默认为主表
}']
3、删除表
['{
"cmd" : "DELETE",
"fields": {
"id": "13579333"
}
}']
-
cmd : 必选字段。定义该文档的操作行为,可以为“add”、“delete”。建议在一个请求中进行批量更新操作,提高网络交互及处理效率。“add”表示新增文档,如果该主键对应文档已经存在,则会覆盖原来文档;“delete”表示删除文档,如果该主键对应文档已经不存在,则认为删除成功。
-
fields : 必选字段。要操作的文档内容,主键字段必选,系统所有操作都是通过主键来进行的。对于“delete”只需要提供文档主键即可。
-
注意:最外层是JsonArray类型,支持多个文档批量操作。
返回参数
|
参数 |
类型 |
描述 |
|
errors |
list |
错误内容 |
|
status |
string |
status:执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查 |
|
request_id |
string |
当前请求的 request_id |
|
result |
boolean |
执行成功返回该参数,值为true,报错不返回该参数 |
|
total |
int |
上传文档的总数 |
|
success |
int |
上传成功文档数 |
|
failure |
int |
上传失败的文档数 |
|
failed_ids |
array |
上传失败的文档id |
响应体示例
{
"request_id" : "abc123-ABC",
"result" : {
"total": 100,
"success": 50,
"failure": 50,
"failed_ids": [
"id1",
"id2",
"id3",
"..."
]
}
"errors" : [
{
"code" : "如果有错误,这里填错误码",
"message" : "如果有错误,这里填错误信息"
}
]
}
注意事项
-
使用API/SDK推送数据时,应用的字段名称大小写不敏感。
-
API/SDK推送数据有次数和大小的限制,目前无法修改上传大小限制。不同应用的限制不同,请参阅使用限制。
-
数据上传后请务必检查返回值,并对相关错误码进行重试(尤其是3007错误),否则会出现数据丢失情况。同时,数据处理是异步的,系统返回“OK”后只表示系统接收数据成功,数据处理过程的错误会在控制台错误信息中展示,请注意及时检查。
-
POST的数据大小有限制,如果您上传的文档总量过大(编码前2M),服务器将拒绝接收任何参数,同时返回异常。
-
POST推送操作 body 部分的数据若包含中文必须要做 UTF-8 编码,Header中的Content-MD5 参数也一样,在计算数据 MD5 值前,必须要先进行 UTF-8 编码,否则会出现推送报错问题。
-
若接口调用返回错误码 4016,此错误为用户通过RAM用户调用文档推送时权限不足,请为RAM用户授予AliyunOpenSearchFullAccess权限,具体操作请参见为RAM用户授权。