数据推送 Demo

主要是在程序中动态将对应的文档数据封装到Map对象中,再将这些Map对象通过add方法添加到缓存中,最后调用pushDocuments方法,批量提交这些Map对象文档数据。

代码示例

package main

import (
    "fmt"
    util "github.com/alibabacloud-go/tea-utils/service"
    "github.com/alibabacloud-go/tea/tea"
    ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)

func main() {
    
    //创建请求用客户端实例
    //Endpoint 为 要访问服务的区域实例域名.
    //AccessUserName AccessPassWord 用于构造鉴权信息.
    
    config := &ha3engine.Config{
        Endpoint:       tea.String("<Endpoint>"),
        InstanceId:     tea.String("<InstanceId>"),
        AccessUserName: tea.String("<AccessUserName>"),
        AccessPassWord: tea.String("<AccessPassWord>"),
    }
    
    // New  一个client, 用以发送请求.
    client, _clientErr := ha3engine.NewClient(config)
    
    // 如果 NewClient 过程中出现异常. 则 返回 _clientErr 且输出 错误信息.
    if _clientErr != nil {
        fmt.Println(_clientErr)
        return
    }
    runtime := &util.RuntimeOptions{
        ConnectTimeout: tea.Int(5000),
        ReadTimeout:    tea.Int(10000),
        Autoretry:      tea.Bool(false),
        IgnoreSSL:      tea.Bool(false),
        MaxIdleConns:   tea.Int(50),
        HttpProxy:      tea.String("http://116.*.*.187:8088"),
    }
    docPush(client)
    docPushWithOptions(client, runtime)
}

func docPush(client *ha3engine.Client) {
    pushDocumentsRequestModel := &ha3engine.PushDocumentsRequestModel{}
    // # dataSourceName文档推送的数据源配置名称,可在实例管理>配置中心>数据源配置 查看.
    dataSourceName := "<数据源名称>"
    keyField := "id"
    
    a := [1000]int{}
    b := [10]int{}
    for x := range a {
        array := []map[string]interface{}{
        }
        for j := range b {
            filed := map[string]interface{}{
                "fields": map[string]interface{}{
                    "id":          tea.ToString(x*100) + tea.ToString(j),
                    "fb_boolean":  tea.BoolValue(nil),
                    "fb_datetime": "2167747200000",
                    "fb_string":   "409a6b18-a10b-409e-af91-07121c45d899",
                },
                "cmd": tea.String("add"),
            }
            array = append(array, filed)
        }
        
        pushDocumentsRequestModel.SetBody(array)
        
        // 发送请求的方法调用.
        response1, _requestErr1 := client.PushDocuments(tea.String(dataSourceName), tea.String(keyField), pushDocumentsRequestModel)
        
        // 如果 发送请求 过程中出现异常. 则 返回 _requestErr 且输出 错误信息.
        if _requestErr1 != nil {
            fmt.Println(_requestErr1)
            return
        }
        
        // 输出正常返回的 response 内容.
        fmt.Println(response1)
        
    }
    
}

func docPushWithOptions(client *ha3engine.Client, runtime *util.RuntimeOptions) {
    
    pushDocumentsRequestModel := &ha3engine.PushDocumentsRequestModel{}
    dataSourceName := "{InstanceId}_odps"
    keyField := "id"
    
    a := [1000]int{}
    b := [10]int{}
    for x := range a {
        array := []map[string]interface{}{
        }
        for j := range b {
            filed := map[string]interface{}{
                "fields": map[string]interface{}{
                    "id":          tea.ToString(x*100) + tea.ToString(j),
                    "fb_boolean":  tea.BoolValue(nil),
                    "fb_datetime": "2167747200000",
                    "fb_string":   "409a6b18-a10b-409e-af91-07121c45d899",
                },
                "cmd": tea.String("add"),
            }
            array = append(array, filed)
        }
        
        pushDocumentsRequestModel.SetBody(array)
        
        // 发送请求的方法调用.
        response1, _requestErr1 := client.PushDocumentsWithOptions(tea.String(dataSourceName), tea.String(keyField), pushDocumentsRequestModel, runtime)
        
        // 如果 发送请求 过程中出现异常. 则 返回 _requestErr 且输出 错误信息.
        if _requestErr1 != nil {
            fmt.Println(_requestErr1)
            return
        }
        
        // 输出正常返回的 response 内容.
        fmt.Println(response1)
        
    }
}