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 :
Une application OpenSearch Industry Algorithm Edition
Une paire AccessKey. Utilisez la paire AccessKey d'un utilisateur RAM plutôt que celle de votre compte Alibaba Cloud. Pour plus de détails, consultez Créer un utilisateur RAM et Créer une paire AccessKey.
Les autorisations requises accordées au rôle
AliyunServiceRoleForOpenSearch. Pour plus de détails, consultez AliyunServiceRoleForOpenSearch et Règles d'autorisation d'accès.
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_IDetALIBABA_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 |
|
|
La clé primaire de l'article renvoyée dans les résultats de recherche. |
|
|
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. |
|
|
Le type de comportement. |
|
|
L'heure à laquelle le serveur reçoit les données, sous forme d'horodatage UNIX précis à la seconde près. |
|
|
La valeur |
|
|
L'ID de requête renvoyé dans les résultats de recherche. |
|
|
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). |
|
|
Défini sur |
|
|
Le numéro de version du SDK OpenSearch pour Go. |
|
|
Défini sur |
|
|
Défini sur |
Champs conditionnels
Les champs suivants sont requis uniquement lorsque bhv_type est like, comment ou buy.
|
Champ |
Description |
|
|
Une description du comportement. Format : |
|
|
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 |
|
|
L'utilisateur clique sur un article ou le consulte. |
Non |
|
|
L'utilisateur ajoute un article au panier. |
Non |
|
|
L'utilisateur ajoute un article à ses favoris. |
Non |
|
|
L'utilisateur aime un article. |
Oui |
|
|
L'utilisateur publie un commentaire sur un article. |
Oui |
|
|
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
}