環境変数の設定
ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。
Alibaba CloudアカウントのAccessKeyペアを使用して、すべてのAPI操作にアクセスできます。API操作の呼び出しや日常のO&Mの実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。RAMユーザーの使用方法については、RAMユーザーの作成 を参照してください。
AccessKeyペアの作成方法については、AccessKeyペアの作成 を参照してください。
RAMユーザーのAccessKeyペアを使用する場合は、Alibaba Cloudアカウントを使用して、必要な権限がAliyunServiceRoleForOpenSearchロールに付与されていることを確認してください。詳細については、AliyunServiceRoleForOpenSearch および アクセス許可ルール を参照してください。
プロジェクトコードなど、他の人が簡単にアクセスできる資料にAccessKeyペアを含めないことをお勧めします。そうしないと、AccessKeyペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。
Linux および macOS
次のコマンドを実行します。
<access_key_id>
および<access_key_secret>
を、使用するRAMユーザーのAccessKey IDとAccessKeyシークレットに置き換えます。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows
環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加し、環境変数をAccessKey IDとAccessKeyシークレットに設定します。
AccessKeyペアを有効にするには、Windowsを再起動します。
依存関係の追加
https://www.nuget.org/packages で依存関係パッケージをダウンロードします。
dotnet add package AlibabaCloud.TeaUtil --version 0.1.5
dotnet add package AlibabaCloud.OpenSearchUtil --version 1.0.2
dotnet add package Aliyun.Credentials --version 1.2.1
dotnet add package Tea --version 0.4.0
サンプルコード
次のサンプルコードは、C# 用 SDK を使用して行動データをプッシュする方法を示しています。
using System;
using System.Collections.Generic;
using AlibabaCloud.TeaUtil.Models;
using Tea;
namespace ConsoleApp2
{
internal class Program
{
public static Dictionary<string, object> behaviorBulk(Client opensearchClient, string appName,
string collectionName, List<object> docContent, Dictionary<string, string> header, RuntimeOptions runTime)
{
string pathName = "/v3/openapi/app-groups/" + appName + "/data-collections/" + collectionName +
"/data-collection-type/BEHAVIOR/actions/bulk";
try
{
return opensearchClient._request("POST", pathName, null, header, docContent, runTime);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
private static void Main(string[] args)
{
var runtime = new RuntimeOptions
{
ConnectTimeout = 5000,
ReadTimeout = 10000,
MaxAttempts = 0,
Autoretry = false,
IgnoreSSL = false,
MaxIdleConns = 50
};
var config = new Config
{
// OpenSearch API のエンドポイントを指定します。エンドポイントは OpenSearch コンソールから取得できます。
Endpoint = "opensearch-cn-hangzhou.aliyuncs.com",
// リクエストプロトコルを指定します。有効な値: HTTPS および HTTP。
Protocol = "HTTPS",
// AccessKey ペアを指定します。
// 環境変数から AccessKey ID と AccessKey シークレットを取得します。
// このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
AccessKeyId = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
AccessKeySecret = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
// 認証方法を指定します。デフォルト値: access_key。sts の値は、Resource Access Management (RAM) と Security Token Service (STS) に基づく認証を示します。
// 有効な値: sts および access_key。
Type = "access_key",
// RAM および STS に基づく認証を使用する場合は、SecurityToken パラメーターを指定する必要があります。Alibaba Cloud RAM の AssumeRole オペレーションを呼び出して、STS トークンを取得できます。
SecurityToken = "",
};
// OpenSearch クライアントインスタンスを作成します。
var openSearch = new Client(config);
// データをプッシュするアプリケーションの名前を指定します。
var appName = "appName";
// HTTP ヘッダーをカスタマイズします。
var header = new Dictionary<string, string>();
// --------------- 行動ログをプッシュする ---------------
// item_id: 検索結果で返される主キーの ID。
string item_id = "358713";
// ops_request_misc: 検索結果で返されるリクエストのその他の情報。
string ops_request_misc =
"%7B%22request%5Fid%22%3A%22161777635816780357273903%22%2C%22scm%22%3A%2220140713.130149759..%22%7D";
// bhv_type: 行動データのイベントタイプ。有効な値:
// cart: 商品をショッピングカートに追加します。
// collect: 商品をお気に入りに追加します。
// like: 商品にいいね!をします。
// comment: 商品にコメントを投稿します。
// buy: 商品を購入します。
// click: 商品をクリックまたは表示します。
string bhv_type = "click";
// request_id: 検索結果で返されるリクエスト ID。
string request_id = "161777635816780357273903";
// reach_time: サーバーがデータを受信した時刻。値は秒単位の UNIX タイムスタンプです。
string reach_time = "1709708439";
// user_id: リクエストを送信したユーザーの一意の ID。
// * ほとんどの場合、ID はログオンしているユーザーの ID です。
// * ユーザーが PC クライアントからリクエストを送信し、ログオンしていない場合、ID は Cookie ID です。
string user_id = "a7a0d37c824b659f36a5b9e3b819fcdd";
List<object> behaviorDocs = new List<object>();
Dictionary<string, object> behaviorDoc = new Dictionary<string, object>();
Dictionary<string, object> behaviorDocFields = new Dictionary<string, object>()
{
{"item_id", item_id},
{"sdk_type", "opensearch_sdk"},
{"sdk_version", "<sdk_version>"}, // OpenSearch SDK for C# のバージョン番号。
{"trace_id", "ALIBABA"}, // サービスプロバイダー。
{"trace_info", ops_request_misc},
{"bhv_type", bhv_type},
{"item_type", "item"},
{"rn", request_id},
{"biz_id", "<biz_id>"}, // モバイルアプリケーションまたはアプリケーションクライアントがビジネスを区別するために使用する数値 ID。このパラメーターは、OpenSearch アプリケーションおよび Artificial Intelligence Recommendation (AIRec) インスタンスに関連付けることができます。
{"reach_time", reach_time},
{"user_id", user_id}
};
behaviorDoc.Add("cmd", "ADD");
behaviorDoc.Add("fields", behaviorDocFields);
behaviorDocs.Add(behaviorDoc);
try
{
behaviorBulk(openSearch, appName, appName, behaviorDocs, header, runtime);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}
詳細については、収集したデータのプッシュ を参照してください。