すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:行動データプッシュのデモコード

最終更新日:Dec 28, 2024

環境変数の設定

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

    1. 環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加し、環境変数をAccessKey IDとAccessKeyシークレットに設定します。

    2. AccessKeyペアを有効にするには、Windowsを再起動します。

依存関係の追加

pip install alibabacloud_tea_util 
pip install alibabacloud_opensearch_util
pip install alibabacloud_credentials

サンプルコード:

# -*- 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__":

    # OpenSearch APIのエンドポイントを指定します。
    endpoint = "<endpoint>"

    # リクエストプロトコルを指定します。有効な値:HTTPSおよびHTTP。
    endpoint_protocol = "HTTP"

    # AccessKeyペアを指定します。
    # 環境変数からAccessKey IDとAccessKeyシークレットを取得します。
    # このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
    access_key_id = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID")
    access_key_secret = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

    # 認証方法を指定します。デフォルト値:access_key。stsの値は、Resource Access Management (RAM) およびSecurity Token Service (STS) に基づく認証を示します。
    # 有効な値:stsおよびaccess_key。
    auth_type = "sts"

    # RAMおよびSTSに基づく認証を使用する場合は、security_tokenパラメータを指定する必要があります。Alibaba Cloud RAMのAssumeRole操作を呼び出して、STSトークンを取得できます。
    security_token = "<security_token>"

 # 共通のリクエストパラメータを指定します。
    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)

    # OpenSearchインスタンスを作成します。
    ops = opensearch(Configs)
    app_name = "app_name"
 
  # --------------- 行動ログをプッシュする ---------------

    # item_id:検索結果で返される主キーのID。
    item_id = "358713"

    # ops_request_misc:検索結果で返されるリクエストのその他の情報。
    ops_request_misc = "%7B%22request%5Fid%22%3A%22161777635816780357273903%22%2C%22scm%22%3A%2220140713.130149759..%22%7D"

    # bhv_type:行動データのイベントタイプ。有効な値:
    # expose:商品を公開します。
    # cart:商品をショッピングカートに追加します。
    # collect:商品をお気に入りに追加します。
    # like:商品にいいね!をします。
    # comment:商品にコメントを投稿します。
    # buy:商品を購入します。
    # click:商品をクリックまたは表示します。
    bhv_type = "click"

    # request_id:検索結果で返されるリクエストID。
    request_id = "161777635816780357273903"

    # reach_time:サーバーがデータを受信した時刻。値は秒単位の精度のUNIXタイムスタンプです。
    reach_time = "1709708439"

    # user_id:リクエストを送信したユーザーの一意のID。
    # * ほとんどの場合、IDはログオンしているユーザーのIDです。
    # * ユーザーがPCクライアントからリクエストを送信し、ログオンしていない場合、IDはCookie IDです。
    user_id = "a7a0d37c824b659f36a5b9e3b819fcdd"
    behavior_fields1 = behavior_fields2 = {
        "item_id": item_id,
        "sdk_type": "opensearch_sdk",
        "sdk_version": "<sdk_version>", # 現在のOpenSearch SDK for Pythonのバージョン番号。3.2.0です。
        {"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,
    }

    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)
説明

詳細については、収集したデータのプッシュ を参照してください。