文本将介绍更新数据(add、delete)结构
URL
/update/$table_name/actions/bulk
$table_name 为实例id_表名,例如:实例id为ha-843qfng6ydhb ,表名为test,那么table_name为ha-843qfng6ydhb_test
以上 URL 省略了请求Header参数及编码等因素
以上 URL 中省略了访问应用的 host 地址
支持格式
JSON
HTTP请求方式
POST
Header参数
参数 | 类型 | 描述 |
authorization | string | 签名 |
X-Opensearch-Swift-PK-Field | string | 推送索引表主键,示例:id |
host | string | 请求host,可在实例详情>API入口>API域名查看,示例:ha-cn-**********.ha.aliyuncs.com |
签名机制
可用以下方法计算签名(authorization)
参数 | 类型 | 描述 |
accessUserName | string | 用户名,可在实例详情页>网络信息 查看 |
accessPassWord | string | 密码,可在实例详情页>网络信息 修改 |
import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;
public class GenerateAuthorization {
public static void main(String[] args) throws Exception {
String accessUserName = "username";
String accessPassWord = "password";
String realmStr = "" + accessUserName + ":" + accessPassWord + "";
String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
System.out.println(authorization);
}
}
authorization正确返回格式
cm9vdDp******mdhbA==
注意:使用HTTP请求设置authorization参数是需加上Basic前缀
示例:
authorization: Basic cm9vdDp******mdhbA==
文档数据格式(body)
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]
cmd : 必选字段。定义该文档的操作行为,可以为“add”、“delete”。建议一个请求中进行批量更新操作,提高网络交互及处理效率。“add”表示新增文档,如果该主键对应文档已经存在,则执行先“delete”再“add”的操作;“delete”表示删除文档,如果该主键对应文档已经不存在,则认为删除成功。
fields : 必选字段。要操作的文档内容,主键字段必选,系统所有操作都是通过主键来进行的。对于“delete”只需要提供文档主键即可。
对于Array类型,需要使用JsonArray来处理,如[{“fields”: { “id”: “0”,”int_array”: [14,85],”string_array”: [“abc”,”xyz”]},”cmd”: “add”}];
注意:最外层是JsonArray类型,支持多个文档批量操作。
示例
请求:(此处省略了请求Header参数及编码等因素)
http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulk
//下面的待上传数据,需要放到body体中
[{
"cmd": "add",
"fields": {
"id": 1,
"name": "Test Data Push"
}
}]
成功返回
无任何返回参数说明推送成功
错误返回
[
{
"code": 3012,
"message": "Resource not found."
}
]
注意事项
使用API/SDK推送数据时,应用的字段名称大小写不敏感。
使用API/SDK推送数据有次数及大小限制,不同应用限制不同,具体请参考系统限制描述。
数据上传后请务必检查返回值,并对相关错误码进行重试(尤其是3007错误),否则会出现数据丢失情况。同时,数据处理是异步的,系统返回“OK”后只表示系统接收数据成功,数据处理过程的错误会在控制台错误信息中展示,请注意及时检查。
POST的数据大小有限制,如果您上传的文档总量过大(编码前2M),服务器将拒绝接收任何参数,同时返回异常。