配置環境變量
配置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
重要
阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維,具體操作,請參見創建RAM用戶。
創建AccessKey ID和AccessKey Secret,請參考創建AccessKey。
如果您使用的是RAM用戶的AccessKey,請確保主賬號已授權AliyunServiceRoleForOpenSearch服務關聯角色,請參考OpenSearch-行業算法版服務關聯角色,相關文檔參考訪問鑒權規則。
請不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
Linux和macOS系統配置方法:
執行以下命令,其中,
<access_key_id>
需替換為您RAM用戶的AccessKey ID,<access_key_secret>
替換為您RAM用戶的AccessKey Secret。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows系統配置方法
新建環境變量文件,添加環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準備好的AccessKey ID和AccessKey Secret。
重啟Windows系統生效。
代碼示例
// 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>"),
// 用戶識別信息
// 從環境變量讀取配置的AccessKey ID和AccessKey Secret,
// 運行代碼示例前必須先配置環境變量,參考文檔上面“配置環境變量”步驟
// 替換對應的access key id
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
// New 一個client, 用以發送請求.
client, _clientErr := opensearch.NewClient(config)
// 如果 NewClient 過程中出現異常. 則 返回 _client_err 且輸出 錯誤信息.
if _clientErr != nil {
fmt.Println(_clientErr)
return
}
// item_id 信息 為 搜索結果返回的主鍵信息. 特定 為主鍵 id.
itemId := "<item_id>"
// ops_request_misc 為搜索請求返回的 ops_request_misc 信息.
opsRequestMisc :="<ops_request_misc>"
// bhv_type 為 行為事件的特征信息, 備選信息如下為類別:
// cart(加購物車)
// collect(收藏)
// like(點贊)
// comment(評論)
// buy(購買)
// click(點擊/查看)
bhvType := "<bhv_type>"
// requestId 為搜索請求返回的 request_id 信息.
requestId :="<request_id>"
// 該數據到達服務端的時間,格式:時間戳,單位:秒
reachTime :="<reach_time>"
// 用于唯一標識終端應用上的用戶的ID。
//*一般為登錄用戶ID。
//*對于PC端,如果是未登錄用戶,也可以設置為cookieid
user_id:="<user_id>"
behavior_fields :=map[string]interface{}{
"item_id": itemId,
"sdk_type": "opensearch_sdk",
"sdk_version": "<sdk_version>", // 當前使用的 opensearch sdk 的版本號.
"trace_id": "ALIBABA", // 用于區分調用了哪個服務商的服務
"trace_info": opsRequestMisc,
"bhv_type": bhvType,
"item_type": "item",
"rn": requestId,
"biz_id":"<biz_id>", // 手機或終端應用用于區分業務的一個數值ID,該字段可用來和OpenSearch上的應用或和AIRec上的實例做關聯
"reach_time": reachTime,
"user_id": user_id,
}
bhv_actions := []string{"like", "comment", "buy"}
if IsContain(bhv_actions,bhvType){ // 當定位類型包含在 bhv_actions 范圍內. 則需要提供更多行為信息.
// 該行為的一些描述信息。格式:key=value{,key=value}
behavior_fields["bhv_detail"] ="<bhv_detail>"
// 行為數量,例如停留時長,購買件數等
behavior_fields["bhv_value"] ="<bhv_value>"
}
behavior_document := map[string]interface{}{
"cmd": "ADD",
"fields": behavior_fields,
}
// 組裝推送文檔 數組結構. 其中包含單條文檔動作.
requestBody := []interface{}{behavior_document}
// 請求發送的配置參數. 用以請求配置及連接池配置.
runtime := &util.RuntimeOptions{
ConnectTimeout: tea.Int(5000),
ReadTimeout: tea.Int(10000),
Autoretry: tea.Bool(false),
IgnoreSSL: tea.Bool(false),
MaxIdleConns: tea.Int(50),
}
// 推送接口需要提供 推送 app 和數據采集名稱,
// appName 是 app 名稱. 不可使用版本推送數據
appName := "<appName>"
dataCollectionName := "<dataCollectionName>"
// dataCollectionType 為 'BEHAVIOR', 此為默認值.
dataCollectionType := "BEHAVIOR"
// 發送請求的方法調用.
_reponse, _request_err := client.Request(
tea.String("POST"),
tea.String("/v3/openapi/app-groups/"+appName+"/data-collections/"+dataCollectionName+"/data-collection-type/"+dataCollectionType+"/actions/bulk"),
nil,
nil,
requestBody,
runtime)
// 如果 發送請求 過程中出現異常. 則 返回 _request_err 且輸出 錯誤信息.
if _request_err != nil {
fmt.Println(_request_err)
return
}
// 輸出正常返回的 _reponse 內容.
fmt.Println(_reponse)
}
func IsContain(items []string, item string) bool {
for _, eachItem := range items {
if eachItem == item {
return true
}
}
return false
}
文檔內容是否對您有幫助?