全部产品
Search
文档中心

智能开放搜索 OpenSearch:更新数据

更新时间:Feb 26, 2024

文本将介绍更新数据(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),服务器将拒绝接收任何参数,同时返回异常。