push推送Demo

// This file is auto-generated, don't edit it. Thanks.
package main

import (
    "fmt"
    util "github.com/alibabacloud-go/tea-utils/service"
    "github.com/alibabacloud-go/tea/tea"
    opensearch "main/client"
)

func main() {
    // 创建请求用客户端实例
    // Endpoint 为 要访问服务的区域域名.
    // AccessKeyId 及AccessKeySecret 用于构造鉴权信息.
    config := &opensearch.Config{
        Endpoint:         tea.String( "<Endpoint>"),
        AccessKeyId:      tea.String("<AccessKeyId>"),
        AccessKeySecret:  tea.String("<AccessKeySecret>"),
    }

    // New  一个client, 用以发送请求.
    client, _clientErr := opensearch.NewClient(config)

    // 如果 NewClient 过程中出现异常. 则 返回 _client_err 且输出 错误信息.
    if _clientErr != nil {
        fmt.Println(_clientErr)
        return
    }

    // 组装文档
    // 必备信息: 推送数据 内必须包含 primaryKey  field 信息(opensearch结构表的主键字段). 否则将无法更新文档.
    //          更新的其他 doc 字段及内容信息. 以 UTF-8 编码.
    // opensearch 支持 'ADD' / 'UPDATE' 及 'DELETE' 命令.分别实现 新增,更新 和删除 doc 动作.
    // 具体构造细则, 请参询: https://help.aliyun.com/document_detail/57154.html
    document1st := map[string]interface{}{
        "cmd": "ADD",
        "fields": map[string]interface{}{
            "id":       1,  //  如文例所示. id 为 文档主键字段.
            "describe": "123456",  // doc 字段.
        },
    }

    // timestamp 信息 用以增加对 文档操作的保序能力. 系统会用该时间戳来作为同一主键文档更新顺序的判断标准.
    // 在没有该timestamp项时,默认以文档发送到OpenSearch的时间作为文档更新时间进行操作。
    document2nd := map[string]interface{}{
        "cmd": "ADD",
        "timestamp": 1401342874778,
        "fields": map[string]interface{}{
            "id":       2,
            "describe": "123456",
        },
    }

    // 组装推送文档 数组结构. 其中包含单条文档动作.
    requestBody := []interface{}{document1st}

    // 此结构可进行多个 document append 动作.
    requestBody = append(requestBody, document2nd)

    // 请求发送的配置参数. 用以请求配置及连接池配置.
    runTime := &util.RuntimeOptions{
        ConnectTimeout: tea.Int(5000),
        ReadTimeout:    tea.Int(10000),
        Autoretry:      tea.Bool(false),
        IgnoreSSL:      tea.Bool(false),
        MaxIdleConns:   tea.Int(50),
    }

    // 推送接口需要提供 推送 app 和表名,
    // App 可以是 app 的版本信息. 也可以是 app 名称.
    // 推送表为 为 目标表的名称. 可在控制台查看.
    appName := "<appName>"
    tableName := "<tableName>"

    // 发送请求的方法调用.
    response, _requestErr := client.Request(
        tea.String("POST"),
        tea.String("/v3/openapi/apps/"+appName+"/"+tableName+"/actions/bulk"),
        nil,
        nil,
        requestBody,
        runTime)

    // 如果 发送请求 过程中出现异常. 则 返回 _requestErr 且输出 错误信息.
    if _requestErr != nil {
        fmt.Println(_requestErr)
        return
    }

    // 输出正常返回的 response 内容.
    fmt.Println(response)
}