Konfigurasikan variabel lingkungan
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Pasangan AccessKey dari akun Alibaba Cloud dapat digunakan untuk mengakses semua Operasi API. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) untuk memanggil Operasi API atau melakukan O&M rutin. Untuk informasi tentang cara menggunakan Pengguna RAM, lihat Buat Pengguna RAM.
Untuk informasi tentang cara membuat pasangan AccessKey, lihat Buat Pasangan AccessKey.
Jika Anda menggunakan pasangan AccessKey dari Pengguna RAM, pastikan bahwa izin yang diperlukan telah diberikan kepada peran AliyunServiceRoleForOpenSearch menggunakan akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat AliyunServiceRoleForOpenSearch dan Aturan Otorisasi Akses.
Kami menyarankan agar Anda tidak menyertakan pasangan AccessKey Anda dalam materi yang mudah diakses oleh orang lain, seperti kode proyek. Jika tidak, pasangan AccessKey Anda mungkin bocor dan sumber daya di akun Anda menjadi tidak aman.
Linux dan macOS
Jalankan perintah berikut. Ganti
<access_key_id>dan<access_key_secret>dengan ID AccessKey dan Rahasia AccessKey dari Pengguna RAM yang Anda gunakan.export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Windows
Buat file variabel lingkungan, tambahkan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET ke file tersebut, lalu atur variabel lingkungan ke ID AccessKey dan Rahasia AccessKey Anda.
Mulai ulang Windows agar pasangan AccessKey berlaku.
Contoh kode
// File ini dibuat secara otomatis, jangan edit. Terima kasih.
package main
import (
"fmt"
util "github.com/alibabacloud-go/tea-utils/service"
"github.com/alibabacloud-go/tea/tea"
opensearch "main/client"
)
func main() {
// Buat instance klien untuk mengirim permintaan.
// Endpoint: endpoint API OpenSearch di wilayah Anda.
// AccessKeyId dan AccessKeySecret: pasangan AccessKey yang digunakan untuk autentikasi.
config := &opensearch.Config{
Endpoint: tea.String("<Endpoint>"),
// Tentukan pasangan AccessKey Anda.
// Dapatkan ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
// Anda harus mengonfigurasi variabel lingkungan sebelum menjalankan kode ini. Untuk informasi lebih lanjut, lihat bagian "Konfigurasikan variabel lingkungan" dari topik ini.
// Tentukan ID AccessKey.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
// Buat klien untuk mengirim permintaan.
client, _clientErr := opensearch.NewClient(config)
// Jika terjadi pengecualian saat sistem membuat klien, _clientErr tidak nil. Dalam hal ini, tampilkan informasi kesalahan.
if _clientErr != nil {
fmt.Println(_clientErr)
return
}
// item_id: ID kunci utama yang dikembalikan dalam hasil pencarian.
itemId := "<item_id>"
// ops_request_misc: informasi tambahan permintaan yang dikembalikan dalam hasil pencarian.
opsRequestMisc :="<ops_request_misc>"
// bhv_type: jenis acara dari data perilaku. Nilai yang valid:
// cart: menambahkan komoditas ke keranjang belanja.
// collect: menambahkan komoditas ke favorit.
// like: menyukai komoditas.
// comment: memposting komentar pada komoditas.
// buy: membeli komoditas.
// click: mengklik atau melihat komoditas.
bhvType := "<bhv_type>"
// requestId: ID permintaan yang dikembalikan dalam hasil pencarian.
requestId :="<request_id>"
// reach_time: Waktu ketika data diterima oleh server. Nilainya adalah timestamp UNIX yang akurat hingga detik.
reachTime :="<reach_time>"
// user_id: ID unik pengguna yang mengirim permintaan.
// * Dalam banyak kasus, ID ini adalah milik pengguna yang telah masuk.
// * Jika pengguna mengirim permintaan dari klien PC dan belum masuk, ID ini adalah ID cookie.
user_id:="<user_id>"
behavior_fields :=map[string]interface{}{
"item_id": itemId,
"sdk_type": "opensearch_sdk",
"sdk_version": "<sdk_version>", // Nomor versi OpenSearch SDK untuk Go.
"trace_id": "ALIBABA", // Penyedia layanan.
"trace_info": opsRequestMisc,
"bhv_type": bhvType,
"item_type": "item",
"rn": requestId,
"biz_id":"<biz_id>", // ID numerik yang digunakan oleh aplikasi seluler atau klien aplikasi untuk membedakan bisnis. Parameter ini dapat dikaitkan dengan aplikasi OpenSearch dan instans Artificial Intelligence Recommendation (AIRec).
"reach_time": reachTime,
"user_id": user_id,
}
bhv_actions := []string{"like", "comment", "buy"}
if IsContain(bhv_actions,bhvType){ // Jika jenis perilaku adalah salah satu jenis yang ditentukan oleh parameter bhv_actions, informasi lebih rinci tentang perilaku perlu disediakan.
// Deskripsi perilaku. Format: key=value{,key=value}
behavior_fields["bhv_detail"] ="<bhv_detail>"
// Informasi numerik tentang perilaku, seperti durasi tinggal dan jumlah komoditas yang dibeli.
behavior_fields["bhv_value"] ="<bhv_value>"
}
behavior_document := map[string]interface{}{
"cmd": "ADD",
"fields": behavior_fields,
}
// Tambahkan dokumen ke array. Setiap dokumen berisi operasi yang akan dilakukan pada dokumen.
requestBody := []interface{}{behavior_document}
// Tentukan parameter yang digunakan untuk mengonfigurasi permintaan dan kolam koneksi.
runtime := &util.RuntimeOptions{
ConnectTimeout: tea.Int(5000),
ReadTimeout: tea.Int(10000),
Autoretry: tea.Bool(false),
IgnoreSSL: tea.Bool(false),
MaxIdleConns: tea.Int(50),
}
// Untuk mendorong data, Anda harus menentukan parameter appName dan dataCollectionName.
// appName: nama aplikasi tempat Anda ingin mendorong data. Jangan atur parameter ini ke informasi versi aplikasi.
appName := "<appName>"
dataCollectionName := "<dataCollectionName>"
// Tentukan parameter dataCollectionType. Secara default, nilai ini diatur ke BEHAVIOR.
dataCollectionType := "BEHAVIOR"
// Panggil metode untuk mengirim permintaan.
_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)
// Jika terjadi pengecualian saat sistem mengirim permintaan, _request_err tidak nil. Dalam hal ini, tampilkan informasi kesalahan.
if _request_err != nil {
fmt.Println(_request_err)
return
}
// Tampilkan respons jika tidak ada pengecualian yang terjadi.
fmt.Println(_reponse)
}
func IsContain(items []string, item string) bool {
for _, eachItem := range items {
if eachItem == item {
return true
}
}
return false
}