Todos los productos
Search
Centro de documentos

OpenSearch:Demo de envío de datos de comportamiento

Última actualización: Sep 05, 2026

Este tema proporciona código de ejemplo en Go para enviar datos de comportamiento a una aplicación de OpenSearch Industry Algorithm Edition. Los datos de comportamiento, como clics, compras, favoritos y otras acciones similares del usuario, alimentan el motor de recomendaciones y mejoran la relevancia de los resultados con el tiempo.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Configurar variables de entorno

Establezca su par de AccessKey como variables de entorno para que el código de ejemplo pueda leerlas durante la ejecución. Nunca codifique las credenciales directamente en los archivos fuente.

  • Linux y macOS: Ejecute los siguientes comandos. Reemplace <access_key_id> y <access_key_secret> con el AccessKey ID y el AccessKey secret de su usuario de RAM.

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows: Cree un archivo de variables de entorno, agregue ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET, y establezca sus valores con su AccessKey ID y AccessKey secret. Reinicie Windows para que las variables surtan efecto.

Campos de comportamiento

Cada solicitud de envío incluye uno o más documentos de comportamiento. Cada documento contiene un objeto fields con los datos de comportamiento.

Campos obligatorios

A continuación se muestran los campos obligatorios para todos los tipos de comportamiento.

Field

Description

item_id

La clave principal del elemento devuelto en los resultados de búsqueda.

user_id

El ID único del usuario. Para usuarios con sesión iniciada, utilice el ID de usuario. Para usuarios anónimos en clientes de PC, utilice el ID de cookie.

bhv_type

El tipo de comportamiento.

reach_time

La hora en que el servidor recibe los datos, como una marca de tiempo UNIX precisa al segundo.

trace_info

El valor de ops_request_misc devuelto en los resultados de búsqueda.

rn

El ID de solicitud devuelto en los resultados de búsqueda.

biz_id

El ID numérico que diferencia las líneas de negocio en clientes móviles o de aplicación. Asocia los datos con aplicaciones de OpenSearch e instancias de Artificial Intelligence Recommendation (AIRec).

sdk_type

Establézcalo en opensearch_sdk.

sdk_version

El número de versión del SDK de OpenSearch para Go.

trace_id

Establézcalo en ALIBABA.

item_type

Establézcalo en item.

Campos condicionales

A continuación se muestran los campos obligatorios únicamente cuando bhv_type es like, comment o buy.

Field

Description

bhv_detail

Una descripción del comportamiento. Formato: key=value{,key=value}.

bhv_value

Información numérica sobre el comportamiento, como la duración de la estancia o la cantidad de artículos comprados.

Tipos de comportamiento {#behavior-types}

Value

Description

Requires conditional fields

click

El usuario hace clic en un elemento o lo visualiza.

No

cart

El usuario agrega un elemento al carrito de compras.

No

collect

El usuario agrega un elemento a favoritos.

No

like

Al usuario le gusta un elemento.

Sí

comment

El usuario publica un comentario sobre un elemento.

Sí

buy

El usuario compra un elemento.

Sí

Código de ejemplo

El código de ejemplo crea un cliente del SDK, construye un documento de comportamiento y lo envía al endpoint de envío masivo de OpenSearch mediante una solicitud 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
}