全部产品
Search
文档中心

OpenSearch:Kode demo untuk mendorong dokumen

更新时间:Jul 02, 2025

Konfigurasikan variabel lingkungan

Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Penting
  • 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 diberikan kepada peran AliyunServiceRoleForOpenSearch menggunakan akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat AliyunServiceRoleForOpenSearch dan Aturan Otorisasi Akses.

  • Kami menyarankan Anda untuk 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

    1. 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.

    2. Mulai ulang Windows agar pasangan AccessKey berlaku.

Kode contoh

// 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
    }

    // Buat dokumen yang akan didorong.
    // Pastikan dokumen berisi bidang kunci utama. Bidang ini akan digunakan sebagai bidang kunci utama tabel tempat dokumen didorong. Jika Anda tidak menentukan bidang kunci utama, Anda tidak dapat memperbarui dokumen.
    // Untuk memperbarui dokumen, tentukan bidang yang ingin diperbarui dan nilainya. Gunakan UTF-8 untuk mengkodekan dokumen.
    // OpenSearch memungkinkan Anda membuat, memperbarui, atau menghapus dokumen menggunakan perintah ADD, UPDATE, atau DELETE.
    
    document1st := map[string]interface{}{
        "cmd": "ADD",
        "fields": map[string]interface{}{
            "id":       1, // Bidang kunci utama dokumen.
            "describe": "123456",  // Bidang biasa dalam dokumen.
        },
    }

    // Anda dapat menentukan bidang timestamp untuk menyesuaikan urutan pembaruan dokumen. OpenSearch menggunakan nilai bidang ini untuk memperbarui dokumen dengan bidang kunci utama yang sama dalam urutan tertentu.
    // Jika parameter ini tidak ditentukan, OpenSearch memperbarui dokumen berdasarkan urutan penerimaan dokumen oleh OpenSearch. 
    document2nd := map[string]interface{}{
        "cmd": "ADD",
        "timestamp": 1401342874778,
        "fields": map[string]interface{}{
            "id":       2,
            "describe": "123456",
        },
    }

    // Tambahkan dokumen ke array. Setiap dokumen berisi operasi yang akan dilakukan pada dokumen.
    requestBody := []interface{}{document1st}

    // Anda dapat memanggil metode append untuk menambahkan lebih banyak dokumen.
    requestBody = append(requestBody, document2nd)

    // 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 dokumen, Anda harus menentukan parameter appName dan tableName.
    // appName: nama atau informasi versi aplikasi tempat Anda ingin mendorong dokumen.
    // tableName: nama tabel tempat Anda ingin mendorong dokumen. Anda dapat melihat tabel aplikasi di konsol OpenSearch.
    appName := "<appName>"
    tableName := "<tableName>"

    // Panggil metode untuk mengirim permintaan.
    response, _requestErr := client.Request(
        tea.String("POST"),
        tea.String("/v3/openapi/apps/"+appName+"/"+tableName+"/actions/bulk"),
        nil,
        nil,
        requestBody,
        runTime)

    // Jika terjadi pengecualian saat sistem mengirim permintaan, _requestErr tidak nil. Dalam hal ini, tampilkan informasi kesalahan.
    if _requestErr != nil {
        fmt.Println(_requestErr)
        return
    }

    // Tampilkan respons jika tidak ada pengecualian.
    fmt.Println(response)
}
Catatan

Untuk informasi lebih lanjut, lihat Proses Data.