Tous les produits
Search
Centre de documentation

OpenSearch:Démonstration de l'envoi de données comportementales

Dernière mise à jour :Aug 21, 2026

Cette rubrique fournit des exemples de code Go pour envoyer des données comportementales vers une application OpenSearch Industry Algorithm Edition. Les données comportementales, telles que les clics, les achats, les ajouts aux favoris et autres actions utilisateur, alimentent le moteur de recommandation et améliorent la pertinence des résultats au fil du temps.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Configurer les variables d'environnement

Définissez votre paire AccessKey en tant que variables d'environnement afin que l'exemple de code puisse les lire lors de l'exécution. Ne codez jamais vos identifiants en dur dans les fichiers source.

  • Linux et macOS : exécutez les commandes suivantes. Remplacez <access_key_id> et <access_key_secret> par l'AccessKey ID et l'AccessKey Secret de votre utilisateur RAM.

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows : créez un fichier de variables d'environnement, ajoutez ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET, puis définissez leurs valeurs avec votre AccessKey ID et votre AccessKey Secret. Redémarrez Windows pour que les variables prennent effet.

Champs de comportement

Chaque requête d'envoi contient un ou plusieurs documents de comportement. Chaque document comprend un objet fields contenant les données de comportement.

Champs obligatoires

Les champs suivants sont requis pour tous les types de comportement.

Champ

Description

item_id

La clé primaire de l'article renvoyée dans les résultats de recherche.

user_id

L'identifiant unique de l'utilisateur. Pour les utilisateurs connectés, utilisez l'ID utilisateur. Pour les utilisateurs anonymes sur les clients PC, utilisez l'ID de cookie.

bhv_type

Le type de comportement.

reach_time

L'heure à laquelle le serveur reçoit les données, sous forme d'horodatage UNIX précis à la seconde près.

trace_info

La valeur ops_request_misc renvoyée dans les résultats de recherche.

rn

L'ID de requête renvoyé dans les résultats de recherche.

biz_id

L'identifiant numérique qui différencie les lignes métier dans les clients mobiles ou applicatifs. Associe les données aux applications OpenSearch et aux instances Artificial Intelligence Recommendation (AIRec).

sdk_type

Défini sur opensearch_sdk.

sdk_version

Le numéro de version du SDK OpenSearch pour Go.

trace_id

Défini sur ALIBABA.

item_type

Défini sur item.

Champs conditionnels

Les champs suivants sont requis uniquement lorsque bhv_type est like, comment ou buy.

Champ

Description

bhv_detail

Une description du comportement. Format : key=value{,key=value}.

bhv_value

Informations numériques relatives au comportement, telles que la durée de consultation ou le nombre d'articles achetés.

Types de comportement {#behavior-types}

Valeur

Description

Nécessite des champs conditionnels

click

L'utilisateur clique sur un article ou le consulte.

Non

cart

L'utilisateur ajoute un article au panier.

Non

collect

L'utilisateur ajoute un article à ses favoris.

Non

like

L'utilisateur aime un article.

Oui

comment

L'utilisateur publie un commentaire sur un article.

Oui

buy

L'utilisateur achète un article.

Oui

Exemple de code

L'exemple de code crée un client SDK, construit un document de comportement et l'envoie vers l'endpoint d'envoi groupé OpenSearch via une requête POST.

// 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() {
  // Configure the client with your endpoint and credentials from environment variables.
  // endpoint: the OpenSearch API endpoint for your region.
  config := &opensearch.Config{
      Endpoint:        tea.String("<Endpoint>"),

      // Read credentials from environment variables set in the "Configure environment variables" section.
      AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
      AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  }

  client, _clientErr := opensearch.NewClient(config)
  if _clientErr != nil {
      fmt.Println(_clientErr)
      return
  }

  // item_id: the primary key of the item returned in search results.
  itemId := "<item_id>"

  // trace_info: the ops_request_misc value returned in search results.
  opsRequestMisc := "<ops_request_misc>"

  // bhv_type: the behavior type. Valid values: cart, collect, like, comment, buy, click.
  bhvType := "<bhv_type>"

  // rn: the request ID returned in search results.
  requestId := "<request_id>"

  // reach_time: UNIX timestamp (seconds) when the server receives the data.
  reachTime := "<reach_time>"

  // user_id: the unique ID of the user.
  // For logged-in users, use the user ID. For anonymous PC users, use the cookie ID.
  user_id := "<user_id>"

  behavior_fields := map[string]interface{}{
      "item_id":     itemId,
      "sdk_type":    "opensearch_sdk",
      "sdk_version": "<sdk_version>",  // OpenSearch SDK for Go version number.
      "trace_id":    "ALIBABA",        // Service provider identifier.
      "trace_info":  opsRequestMisc,
      "bhv_type":    bhvType,
      "item_type":   "item",
      "rn":          requestId,
      "biz_id":      "<biz_id>",       // Numeric business ID for mobile or application clients.
      "reach_time":  reachTime,
      "user_id":     user_id,
  }

  // For like, comment, and buy behaviors, include bhv_detail and bhv_value.
  bhv_actions := []string{"like", "comment", "buy"}
  if IsContain(bhv_actions, bhvType) {
      behavior_fields["bhv_detail"] = "<bhv_detail>"  // Format: key=value{,key=value}
      behavior_fields["bhv_value"]  = "<bhv_value>"   // Numerical behavior info, e.g. purchase quantity.
  }

  behavior_document := map[string]interface{}{
      "cmd":    "ADD",
      "fields": behavior_fields,
  }

  requestBody := []interface{}{behavior_document}

  // Specify the parameters that are used to configure the request and connection pool.
  runtime := &util.RuntimeOptions{
      ConnectTimeout: tea.Int(5000),
      ReadTimeout:    tea.Int(10000),
      Autoretry:      tea.Bool(false),
      IgnoreSSL:      tea.Bool(false),
      MaxIdleConns:   tea.Int(50),
  }

  // appName: the name of the OpenSearch application (not the version name).
  // dataCollectionName: the name of the data collection in the application.
  appName := "<appName>"
  dataCollectionName := "<dataCollectionName>"

  // dataCollectionType: set to BEHAVIOR for behavioral data.
  dataCollectionType := "BEHAVIOR"

  _response, _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)

  if _request_err != nil {
      fmt.Println(_request_err)
      return
  }

  fmt.Println(_response)
}

func IsContain(items []string, item string) bool {
   for _, eachItem := range items {
       if eachItem == item {
           return true
       }
   }
   return false
}