データのインポート(RESTful API)
このページでは、用意したデータを Zilliz Cloud RESTful API でインポートする方法を説明します。
事前準備
以下を満たしていることを確認してください。
-
クラスターの API キーを取得していること。詳細は、API キー を参照してください。
-
サポートされているいずれかの形式でデータを用意していること。
サポートされている形式の詳細については、ストレージオプション および フォーマットオプション を参照してください。さらに詳しく知りたい場合は、エンドツーエンドのノートブック データインポートのハンズオン も参照してください。
-
サンプルデータセットに一致するスキーマを持つコレクションを作成していること。
コレクションの作成方法の詳細については、コレクションの管理(コンソール) を参照してください。
Zilliz Cloud では、クラスターをホストするクラウドプロバイダーに関係なく、任意のオブジェクトストレージサービスから任意の Zilliz Cloud クラスターにデータをインポートできるようになりました。たとえば、AWS S3 バケットから GCP にデプロイされた Zilliz Cloud クラスターにデータをインポートできます。
低レイテンシで安定したエクスペリエンスを確保するには、ターゲットクラスターと同じプロバイダーかつ同じリージョンのバケットまたは BLOB コンテナーを使用することをお勧めします。
ボリュームからデータをインポートする
ボリュームからクラスターにデータをインポートするには、まず マネージドボリュームまたは外部ボリューム を作成します。マネージドボリュームの場合は、データファイルをボリュームにアップロードします。外部ボリュームの場合は、データファイルがマッピングされたクラウドストレージバケットにあることを確認します。その後、次のようにしてデータをインポートします。
- Serving Cluster
- On-Demand Compute
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"dbName": "default",
"collectionName": "medium_articles",
"partitionName": "",
"volumeName": "my_volume",
"dataPaths": [
[
"json-folder/1.json"
]
]
}'
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Content-Type: application/json" \
-d '{
"projectId": "proj-xxxxxxxxxxxxxxx",
"regionId": "aws-us-west-2",
"dbName": "default",
"collectionName": "medium_articles",
"partitionName": "",
"volumeName": "my_volume",
"dataPaths": [
[
"json-folder/1.json"
]
]
}'
特定のパーティションにデータをインポートするには、リクエストに partitionName を含めます。
Zilliz Cloud が上記のリクエストを処理すると、ジョブ ID を受け取ります。このジョブ ID を使用して、次のコマンドでインポートの進行状況を監視します。
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/get_progress" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"jobId": "job-xxxxxxxxxxxxxxxxxxxxx"
}'
外部ストレージからデータをインポートする
外部ストレージ経由でファイルからデータをインポートするには、まず AWS S3 や Google Cloud Storage(GCS)などのオブジェクトストレージバケットにファイルをアップロードする必要があります。アップロードしたら、リモートバケット内のファイルのパスと、Zilliz Cloud がバケットからデータを取得するためのバケット認証情報を取得します。サポートされているオブジェクトパスの詳細については、ストレージオプション を参照してください。
データセキュリティの要件に応じて、データインポート時に長期認証情報または短期認証情報のいずれかを使用できます。
認証情報の取得方法の詳細については、以下を参照してください。
-
Amazon S3: 長期的な認証情報を使用した認証
-
Google Cloud Storage: サービスアカウントの HMAC キーの管理
-
Azure Blob Storage: アカウントアクセスキーの表示
セッショントークンの使用の詳細については、この FAQ を参照してください。
データインポートを成功させるには、ターゲットコレクションの実行中または保留中のインポートジョブが 10,000 件未満であることを確認してください。
オブジェクトパスとバケット認証情報を取得したら、次のように API を呼び出します。
- Serving Cluster
- On-Demand Compute
# replace url and token with your own
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "medium_articles",
"partitionName": "",
"objectUrl": "https://assets.zilliz.com/docs/example-data-import.json",
"accessKey": "",
"secretKey": ""
}'
# replace url and token with your own
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"projectId": "proj-xxxxxxxxxxxxxxx",
"regionId": "aws-us-west-2",
"collectionName": "medium_articles",
"partitionName": "",
"objectUrl": "https://assets.zilliz.com/docs/example-data-import.json",
"accessKey": "",
"secretKey": ""
}'
特定のパーティションにデータをインポートするには、リクエストに partitionName を含める必要があります。
Zilliz Cloud が上記のリクエストを処理すると、ジョブ ID を受け取ります。このジョブ ID を使用して、次のコマンドでインポートの進行状況を監視します。
- Serving Cluster
- On-Demand Compute
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/get_progress" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"jobId": "job-xxxxxxxxxxxxxxxxxxxxx"
}'
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/get_progress" \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"jobId": "job-xxxxxxxxxxxxxxxxxxxxx",
"projectId": "proj-xxxxxxxxxxxxxxxxxxxxx",
"regionId": "aws-us-west-2"
}'
詳細は、Import および Get Import Progress を参照してください。
結果を確認する
コマンドの出力が以下のようであれば、インポートジョブは正常に送信されています。
{
"code": 0,
"data": {
"jobId": "job-xxxxxxxxxxxxxxxxxxxxx"
}
}
また、RESTful API を呼び出して 現在のインポートジョブの進行状況の取得 や すべてのインポートジョブの一覧表示 を行うこともできます。あるいは、Zilliz Cloud コンソールの ジョブセンター にアクセスして、結果とジョブの詳細を確認することもできます。
FAQ
外部ボリュームと、外部ストレージから直接インポートすることの違いは何ですか?
どちらも、独自の S3 または GCS バケットからデータをインポートできます。主な違いは次のとおりです。
-
外部ボリュームでは、認証情報を管理するために、AWS S3 バケット、Google Cloud Storage バケット、または Microsoft Azure Blob Storage コンテナー を Zilliz Cloud と連携する必要があります。認証情報は一度設定すると、複数のボリュームと操作で再利用されます。データエンジニアがクラウドストレージのキーに直接アクセスする必要はありません。
-
直接的な 外部ストレージインポート では、インポートリクエストごとに認証情報(アクセスキーとシークレットキー)を指定する必要があります。これは 1 回限りのインポートには簡単ですが、認証情報の分離や再利用はできません。