環境変数の設定
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を再起動します。
依存関係の追加
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 appAlgoSearch(self, app_name: str, algo_name: str, algo_type: str, query_params: dict) -> Dict[str, Any]:
algo_type = algo_type if algo_type else "suggest"
path_name = f'/v3/openapi/apps/{app_name}/suggest/{algo_name}/search'
if algo_type != "suggest":
if algo_type not in ["hint", "hot"]:
raise Exception("algo_type should be hint or hot")
path_name = f'/v3/openapi/apps/{app_name}/actions/{algo_type}'
try:
response = self.Clients._request(method="GET", pathname=path_name, query=query_params,headers = self.header,body=None, runtime=self.runtime)
return response
except TeaException as e:
print(e)
if __name__ == "__main__":
# OpenSearch APIのエンドポイントを指定します。値にはhttp://プレフィックスは含まれません。
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>"
# 共通のリクエストパラメーターを指定します。
# 注:security_tokenおよびtypeパラメーターは、SDKをRAMユーザーとして使用する場合にのみ必要です。
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"
model_name = "model_name"
# --------------- ドロップダウン候補の照会 ---------------
suggest_algoQuery = {
"query": "OpenSearch",
"hit": 10,
"user_id": "a7a0d37c824b659f36a5b9e3b819fcdd"
}
res2 = ops.appAlgoSearch(app_name=app_name, algo_name=model_name, algo_type="suggest",
query_params=suggest_algoQuery)
print(res2)
詳細については、ドロップダウン候補の照会 を参照してください。