全部產品
Search
文件中心

OpenSearch:更新資料

更新時間:Jul 13, 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),伺服器將拒絕接收任何參數,同時返回異常。