この記事では、API を使用してテーブル内のデータを更新する方法について説明します。
ステップ1:テーブルの追加
完全なデータセットをインポートするには、テーブルを作成し、OSS、MaxCompute、Data Lake Formation (DLF) などのデータソースを設定します。
インスタンス詳細ページの左側メニューで、[テーブル管理] をクリックし、次に [テーブルの追加] をクリックします。
テーブルの作成に関する詳細については、次のトピックをご参照ください。
テーブルを設定した後、ステータスが In Use に変わると、API を使用してデータを挿入できます。
テーブルリストの [ステータス] 列に [使用中] と表示されます。
ステップ2:パブリックアクセスホワイトリストの設定
同じ VPC と vSwitch からインスタンスにアクセスしている場合は、このステップをスキップできます。
オンプレミス環境またはパブリックインターネットからインスタンスにアクセスしている場合は、「パブリックアクセスホワイトリストの設定」をご参照ください。
ステップ3:テーブルへのデータプッシュ
次の例では Python を使用します。
依存関係のインストール:
pip install alibabacloud-ha3engine-vector
サンプルコード:
# -*- coding: utf-8 -*-
from alibabacloud_ha3engine_vector import models, client
from Tea.exceptions import TeaException, RetryError
Config = models.Config(
endpoint="<your_api_endpoint>", # インスタンスの API エンドポイント。インスタンス詳細ページの API エンドポイントで確認できます。
# "http://" プレフィックスを削除してください。
# オンプレミス環境またはパブリックインターネットからアクセスする場合は、パブリックエンドポイントを使用します。
# 同じ VPC 内からアクセスする場合は、プライベートエンドポイントを使用します。
instance_id="<your_instance_id>", # インスタンス ID。インスタンス詳細ページの左上で確認できます。例:ha-cn-i7*****605
protocol="http",
access_user_name="<your_username>", # API アクセス用のユーザー名。インスタンス詳細ページの API エンドポイントで確認できます。
access_pass_word="<your_password>" # ユーザー名のパスワード。インスタンス詳細ページの API エンドポイントで管理できます。
)
# エンジンクライアントを初期化します。
ha3EngineClient = client.Client(Config)
def push():
# ドキュメントをプッシュするテーブル名は、<instance_id>_<table_name> の形式で指定します。
tableName = "<instance_id>_<table_name>";
try:
# ドキュメントを追加します。これはアップサート操作です。同じプライマリキーを持つドキュメントが存在する場合は上書きし、
# 存在しない場合は新しいドキュメントとして追加します。
# =====================================================
# ドキュメントのフィールドを定義します。
add2DocumentFields = {
"id": 1, # プライマリキー (INT)。
"cate_id": "123", # 単一値フィールド (STRING)。
"vector": "a\x1Db\x1Dc\x1Dd" # 複数値フィールド (STRING)。値は \x1D 文字で区切ります。
}
# リクエスト用にドキュメントを構成します。
add2Document = {
"fields": add2DocumentFields,
"cmd": "add" # "add" コマンドを使用して、ドキュメントを挿入または更新します。
}
optionsHeaders = {}
# リクエストボディは、1 つ以上のドキュメント操作の配列です。
documentArrayList = []
documentArrayList.append(add2Document)
pushDocumentsRequest = models.PushDocumentsRequest(optionsHeaders, documentArrayList)
# ドキュメントのプライマリキーフィールドを指定します。
pkField = "id"
# デフォルトのランタイムオプションでリクエストを送信します。
response = ha3EngineClient.push_documents(tableName, pkField, pushDocumentsRequest)
print(response.body)
except TeaException as e:
print(f"API エラーが発生しました: {e}")
except RetryError as e:
print(f"接続エラーが発生しました: {e}")
if __name__ == "__main__":
push()
注意:
-
Python SDK を使用する場合、エンドポイントから
http://プレフィックスを削除してください。 -
オンプレミス環境またはパブリックインターネットからアクセスする場合は、パブリックエンドポイント (
publicを含むエンドポイント) を使用し、パブリックアクセスが有効でホワイトリストが設定されていることを確認してください。同じ VPC 内 (たとえば、ECS インスタンスから) からアクセスする場合は、プライベートエンドポイントを使用します。 -
リクエストの
tableNameパラメーターには、<instance_id>_<table_name>の形式を使用します。例:tableName=ha-cn-zpr3dgzxg04_test_vector_api。
{"status": "OK", "code": 200} というレスポンスは、リクエストが成功したことを示します。
ステップ4:データの検証
データを検証するには、プライマリキーまたはベクトルを使用してクエリテストツールでクエリを実行します。
左側メニューで、[ベクトル管理] > [クエリテスト] をクリックし、[ベクトルクエリ] タブを選択します。[テーブル名] ドロップダウンリストでターゲットテーブルを選択し、左側の編集エリアに JSON 形式でクエリリクエスト (vector、topK、indexName、includeVector などのパラメーターを含む) を入力し、[検索] をクリックします。クエリ結果と経過時間が右側に表示されます。
クエリ構文の詳細については、「プライマリキーに基づくクエリ」と「ベクトルに基づくクエリ」をご参照ください。
その他の SDK リファレンス
他のプログラミング言語での SDK の例については、「データの更新」をご参照ください。