バッチアップロードを使用したドキュメントのインデックスへの直接追加 - Amazon Kendra

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

バッチアップロードを使用したドキュメントのインデックスへの直接追加

を使用して、ドキュメントをインデックスに直接追加できますBatchPutDocumentAPI。コンソールを使用してドキュメントを直接追加することはできません。コンソールを使用する場合、データソースに接続して、ドキュメントをインデックスに追加します。ドキュメントは S3 バケットから追加することも、バイナリデータとして指定することもできます。でサポートされているドキュメントタイプのリストについては、「ドキュメントのタイプ Amazon Kendra 」を参照してください。

BatchPutDocument を使用したインデックスへのドキュメントの追加は、非同期演算です。を呼び出すとBatchPutDocumentAPI、 BatchGetDocumentStatus API を使用してドキュメントのインデックス作成の進行状況をモニタリングします。ドキュメント のリストBatchGetDocumentStatusAPIを使用して を呼び出すとIDs、ドキュメントのステータスが返されます。ドキュメントのステータスが INDEXED または FAILED の場合、ドキュメントの処理は完了しています。ステータスが の場合FAILED、 はドキュメントをインデックス化できなかった理由BatchGetDocumentStatusAPIを返します。

ドキュメント取り込みプロセス中にコンテンツやドキュメントメタデータのフィールドや属性を変更する場合は、「Amazon Kendra Custom Document Enrichment」を参照してください。カスタムデータソースを使用する場合、 を使用して送信する各ドキュメントには、属性またはフィールドとしてデータソース ID と実行 ID BatchPutDocumentAPIが必要です。詳細については、「Required attributes for custom data sources」を参照してください。

注記

各ドキュメント ID はインデックスごとに一意である必要があります。データソースを作成してドキュメントに一意のインデックスを作成しIDs、 を使用して同じドキュメントBatchPutDocumentAPIにインデックスを付けることはできません。またはその逆も同様です。データソースを削除し、 を使用して同じドキュメントのインデックスBatchPutDocumentAPIを作成するか、その逆を実行することもできます。BatchPutDocument および BatchDeleteDocument APIs を同じドキュメントセットのデータソースコネクタと組み合わせて Amazon Kendra 使用すると、データに不整合が生じる可能性があります。代わりに、Amazon Kendra カスタムデータソースコネクタの使用をお勧めします。

次のデベロッパーガイドドキュメントでは、ドキュメントをインデックスに直接追加する方法を示します。

でのドキュメントの追加 BatchPutDocument API

次の例では、 を呼び出すことで、テキストの BLOB をインデックスに追加しますBatchPutDocument。を使用してBatchPutDocumentAPI、インデックスに直接ドキュメントを追加できます。でサポートされているドキュメントタイプのリストについては、「ドキュメントのタイプ Amazon Kendra 」を参照してください。

AWS CLI と を使用してインデックスを作成する例についてはSDKs、「インデックスの作成」を参照してください。CLI と をセットアップするにはSDKs、「 のセットアップ Amazon Kendra」を参照してください。

注記

インデックスに追加されるファイルは、UTF-8 エンコードされたバイトストリームにある必要があります。

次の例では、UTF-8 エンコードされたテキストがインデックスに追加されます。

CLI

で AWS Command Line Interface、次のコマンドを使用します。次のコマンドは、Linux と macOS 用にフォーマットされています。Windows を使用している場合、Unix 行連結記号 (\) をキャレット (^) に置き換えます。

aws kendra batch-put-document \ --index-id index-id \ --documents '{"Id":"doc-id-1", "Blob":"Amazon.com is an online retailer.", "ContentType":"PLAIN_TEXT", "Title":"Information about Amazon.com"}'
Python
import boto3 kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the title and text title = "Information about Amazon.com" text = "Amazon.com is an online retailer." document = { "Id": "1", "Blob": text, "ContentType": "PLAIN_TEXT", "Title": title } documents = [ document ] result = kendra.batch_put_document( IndexId = index_id, Documents = documents ) print(result)
Java
package com.amazonaws.kendra; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.BatchPutDocumentRequest; import software.amazon.awssdk.services.kendra.model.BatchPutDocumentResponse; import software.amazon.awssdk.services.kendra.model.ContentType; import software.amazon.awssdk.services.kendra.model.Document; public class AddDocumentsViaAPIExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String indexId = "yourIndexId"; Document testDoc = Document .builder() .title("The title of your document") .id("a_doc_id") .blob(SdkBytes.fromUtf8String("your text content")) .contentType(ContentType.PLAIN_TEXT) .build(); BatchPutDocumentRequest batchPutDocumentRequest = BatchPutDocumentRequest .builder() .indexId(indexId) .documents(testDoc) .build(); BatchPutDocumentResponse result = kendra.batchPutDocument(batchPutDocumentRequest); System.out.println(String.format("BatchPutDocument Result: %s", result)); } }

S3 バケットからのドキュメントの追加

を使用して、 Amazon S3 バケットからインデックスに直接ドキュメントを追加できますBatchPutDocumentAPI。同じコールで最大 10 個のドキュメントを追加できます。S3 バケットを使用する場合は、ドキュメントを含むバケットにアクセスするためのアクセス許可を IAM ロールに提供する必要があります。RoleArn パラメータでロールを指定します。

を使用して Amazon S3 バケットからドキュメントBatchPutDocumentAPIを追加する操作は 1 回限りです。インデックスをバケットの内容と同期させるには、 Amazon S3 データソースを作成します。詳細については、「Amazon S3 data source」を参照してください。

AWS CLI と を使用してインデックスを作成する例についてはSDKs、「インデックスの作成」を参照してください。CLI と をセットアップするにはSDKs、「 のセットアップ Amazon Kendra」を参照してください。S3 バケットの作成については、Amazon Simple Storage Service ドキュメントを参照してください。

次の例では、 BatchPutDocument を使用して 2 つの Microsoft Word ドキュメントがインデックスに追加されていますAPI。

Python
import boto3 kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the IAM role ARN required to index documents in an S3 bucket role_arn = "arn:aws:iam::${acccountID}:policy/${roleName}" doc1_s3_file_data = { "Bucket": "bucket-name", "Key": "document1.docx" } doc1_document = { "S3Path": doc1_s3_file_data, "Title": "Document 1 title", "Id": "doc_1" } doc2_s3_file_data = { "Bucket": "bucket-name", "Key": "document2.docx" } doc2_document = { "S3Path": doc2_s3_file_data, "Title": "Document 2 title", "Id": "doc_2" } documents = [ doc1_document, doc2_document ] result = kendra.batch_put_document( Documents = documents, IndexId = index_id, RoleArn = role_arn ) print(result)
Java
package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.BatchPutDocumentRequest; import software.amazon.awssdk.services.kendra.model.BatchPutDocumentResponse; import software.amazon.awssdk.services.kendra.model.Document; import software.amazon.awssdk.services.kendra.model.S3Path; public class AddFilesFromS3Example { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String indexId = "yourIndexId"; String roleArn = "yourIndexRoleArn"; Document pollyDoc = Document .builder() .s3Path( S3Path.builder() .bucket("amzn-s3-demo-bucket") .key("What is Amazon Polly.docx") .build()) .title("What is Amazon Polly") .id("polly_doc_1") .build(); Document rekognitionDoc = Document .builder() .s3Path( S3Path.builder() .bucket("amzn-s3-demo-bucket") .key("What is Amazon Rekognition.docx") .build()) .title("What is Amazon rekognition") .id("rekognition_doc_1") .build(); BatchPutDocumentRequest batchPutDocumentRequest = BatchPutDocumentRequest .builder() .indexId(indexId) .roleArn(roleArn) .documents(pollyDoc, rekognitionDoc) .build(); BatchPutDocumentResponse result = kendra.batchPutDocument(batchPutDocumentRequest); System.out.println(String.format("BatchPutDocument result: %s", result)); } }