All Products
Search
Document Center

OpenSearch:Demo dorong data perilaku

Last Updated:Apr 01, 2026

Dorong event perilaku pengguna—seperti klik, pembelian, penambahan ke keranjang belanja, dan lainnya—ke OpenSearch agar mesin peringkat dapat belajar dari pola penggunaan nyata dan meningkatkan relevansi pencarian seiring waktu.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Membuat aplikasi OpenSearch Edisi Algoritma Industri di Akun Alibaba Cloud Anda.

  • Memiliki Pengguna Resource Access Management (RAM) dengan izin yang diperlukan. Pasangan Kunci Akses (AccessKey pair) dari Akun Alibaba Cloud memberikan akses ke semua Operasi API, sehingga disarankan menggunakan Pengguna RAM untuk panggilan API serta operasi dan pemeliharaan (O&M) rutin. Lihat Create a RAM user untuk memulai, lalu tinjau Access authorization rules guna memberikan izin yang tepat.

  • Memiliki ID AccessKey dan Rahasia AccessKey dari Pengguna RAM tersebut. Lihat Create an AccessKey pair.

  • (Opsional) Memiliki Token Layanan Keamanan (STS) jika Anda menggunakan autentikasi RAM dan STS. Panggil operasi AssumeRole untuk mendapatkannya.

Penting

Jangan pernah menyertakan Pasangan Kunci Akses (AccessKey pair) Anda secara langsung dalam kode proyek. Simpan kredensial dalam variabel lingkungan untuk menghindari pengeksposan.

Siapkan variabel lingkungan

Tetapkan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET sebelum menjalankan kode contoh.

Linux dan macOS

Ganti <access_key_id> dan <access_key_secret> dengan ID AccessKey dan Rahasia AccessKey Pengguna RAM Anda.

export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>

Windows

  1. Buat file variabel lingkungan dan tambahkan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET beserta nilainya.

  2. Mulai ulang Windows agar perubahan diterapkan.

Instal dependensi

pip install alibabacloud_tea_util
pip install alibabacloud_opensearch_util
pip install alibabacloud_credentials

Kode contoh

Kode berikut mendorong event perilaku ke OpenSearch menggunakan metode behaviorBulk, yang mengirim permintaan POST ke titik akhir data perilaku bulk.

# -*- coding: utf-8 -*-

import time, os
from typing import Dict, Any

from Tea.exceptions import TeaException
from Tea.request import TeaRequest
from alibabacloud_tea_util import models as util_models

from BaseRequest import Config, Client


class opensearch:
    def __init__(self, config: Config):
        self.Clients = Client(config=config)
        self.runtime = util_models.RuntimeOptions(
            connect_timeout=10000,
            read_timeout=10000,
            autoretry=False,
            ignore_ssl=False,
            max_idle_conns=50,
            max_attempts=3
        )
        self.header = {}

    def behaviorBulk(self, app_name: str, collections_name: str, doc_content: list) -> Dict[str, Any]:
        try:
            response = self.Clients._request(method="POST",
                                             pathname=f'/v3/openapi/app-groups/{app_name}/data-collections/{collections_name}/data-collection-type/BEHAVIOR/actions/bulk',query={},headers = self.header,
                                             body=doc_content, runtime=self.runtime)
            return response
        except Exception as e:
            print(e)

if __name__ == "__main__":

    # Tentukan titik akhir API OpenSearch.
    endpoint = "<endpoint>"

    # Tentukan protokol permintaan. Nilai yang valid: HTTPS dan HTTP.
    endpoint_protocol = "HTTP"

    # Baca kredensial dari variabel lingkungan.
    # Tetapkan variabel lingkungan sebelum menjalankan kode ini (lihat bagian "Siapkan variabel lingkungan" di atas).
    access_key_id = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID")
    access_key_secret = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

    # Tentukan metode autentikasi.
    # Nilai yang valid: access_key (default), sts (autentikasi RAM + STS).
    auth_type = "sts"

    # Hanya diperlukan untuk autentikasi STS.
    # Panggil operasi AssumeRole Alibaba Cloud RAM untuk mendapatkan token STS.
    security_token = "<security_token>"

    # Konfigurasikan parameter permintaan umum.
    Configs = Config(endpoint=endpoint, access_key_id=access_key_id, access_key_secret=access_key_secret,
                     security_token=security_token, type=auth_type, protocol=endpoint_protocol)

    # Buat instans OpenSearch.
    ops = opensearch(Configs)
    app_name = "app_name"

    # --------------- Dorong log perilaku ---------------

    # item_id: ID kunci utama yang dikembalikan dalam hasil pencarian.
    item_id = "358713"

    # ops_request_misc: informasi tambahan permintaan yang dikembalikan dalam hasil pencarian.
    ops_request_misc = "%7B%22request%5Fid%22%3A%22161777635816780357273903%22%2C%22scm%22%3A%2220140713.130149759..%22%7D"

    # bhv_type: aksi pengguna yang memicu event ini.
    # Nilai yang valid: expose, cart, collect, like, comment, buy, click
    bhv_type = "click"

    # request_id: ID permintaan yang dikembalikan dalam hasil pencarian.
    request_id = "161777635816780357273903"

    # reach_time: saat server menerima event. Gunakan stempel waktu UNIX yang akurat hingga detik.
    reach_time = "1709708439"

    # user_id: ID unik pengguna yang memicu event.
    # Gunakan ID pengguna yang login; gunakan ID cookie untuk pengguna tidak terotentikasi pada client PC.
    user_id = "a7a0d37c824b659f36a5b9e3b819fcdd"
    behavior_fields1 = behavior_fields2 = {
        "item_id": item_id,
        "sdk_type": "opensearch_sdk",
        "sdk_version": "<sdk_version>", # Versi SDK OpenSearch untuk Python saat ini: 3.2.0
        {"trace_id", "ALIBABA"}, # Penyedia layanan.
        "trace_info": ops_request_misc,
        "bhv_type": bhv_type,
        "item_type": "item",
        "rn": request_id,
        "biz_id":"<biz_id>", # ID numerik untuk membedakan bisnis di berbagai aplikasi seluler atau client. Dapat ditautkan ke aplikasi OpenSearch dan instans Rekomendasi AI (AIRec).
        "reach_time": reach_time,
        "user_id": user_id,
    }

    behavior_documents = [{"cmd": "add", "fields": behavior_fields1}, {"cmd": "add", "fields": behavior_fields2}]
    res6 = ops.behaviorBulk(app_name=app_name, collections_name=app_name, doc_content=behavior_documents)
    print(res6)

Jenis event perilaku

Gunakan bidang bhv_type untuk menentukan aksi yang dilakukan pengguna.

Aksi penggunabhv_type nilai
Melihat produk dalam hasil pencarianexpose
Mengklik atau membuka produkclick
Menyukai produklike
Menambahkan produk ke favoritcollect
Mengirim komentar tentang produkcomment
Menambahkan produk ke keranjang belanjacart
Membeli produkbuy

Bidang data perilaku

Setiap event perilaku merupakan objek JSON dalam kunci fields dokumen dengan "cmd": "add". Tabel berikut mencantumkan semua bidang beserta persyaratannya.

BidangWajibDeskripsiContoh
item_idYaID kunci utama item yang dikembalikan dalam hasil pencarian"358713"
bhv_typeYaJenis aksi pengguna. Lihat Jenis event perilaku untuk nilai yang valid"click"
reach_timeYaStempel waktu UNIX (dalam detik) saat server menerima event"1709708439"
user_idYaPengidentifikasi unik pengguna. Gunakan ID pengguna yang login, atau ID cookie untuk pengguna PC yang tidak terotentikasi"a7a0d37c824b659f36a5b9e3b819fcdd"
rnYaID permintaan yang dikembalikan dalam hasil pencarian"161777635816780357273903"
trace_infoYaInformasi tambahan permintaan (ops_request_misc) yang dikembalikan dalam hasil pencarianString JSON yang di-encode URL
item_typeYaJenis item. Nilai tetap: "item""item"
sdk_typeYaPengidentifikasi SDK. Nilai tetap: "opensearch_sdk""opensearch_sdk"
sdk_versionYaVersi OpenSearch SDK untuk Python. Versi saat ini: 3.2.0"3.2.0"
trace_idYaPengidentifikasi penyedia layanan. Nilai tetap: "ALIBABA""ALIBABA"
biz_idDirekomendasikanID numerik yang membedakan bisnis di berbagai aplikasi seluler atau client. Dapat ditautkan ke aplikasi OpenSearch dan instans AIRec"<biz_id>"
cmdYaOperasi dokumen. Nilai tetap: "add""add"

Langkah berikutnya