일괄 업로드를 사용하여 인덱스에 직접 문서 추가 - Amazon Kendra

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

일괄 업로드를 사용하여 인덱스에 직접 문서 추가

API를 사용하여 색인에 직접 문서를 추가할 수 있습니다. BatchPutDocument 콘솔을 사용하여 문서를 직접 추가할 수 없습니다. 콘솔을 사용하는 경우 데이터 소스에 연결하여 인덱스에 문서를 추가합니다. 문서는 S3 버킷에서 추가하거나 이진 데이터로 제공할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하십시오.

BatchPutDocument를 사용하여 인덱스에 문서를 추가하는 것은 비동기식 작업입니다. API를 호출한 후 BatchPutDocument API를 사용하여 문서 색인 생성 진행 상황을 모니터링합니다. BatchGetDocumentStatus 문서 ID 목록을 사용하여 BatchGetDocumentStatus API를 호출하면 문서 상태가 반환됩니다. 문서 상태가 INDEXED 또는 FAILED이면 문서 처리가 완료된 것입니다. 상태가 FAILED인 경우 BatchGetDocumentStatus API는 문서를 인덱싱할 수 없는 이유를 반환합니다.

문서 수집 프로세스 중에 콘텐츠와 문서 메타데이터나 필드 또는 속성을 변경하려면 Amazon Kendra 사용자 지정 문서 보강을 참조하세요. 사용자 지정 데이터 소스를 사용하려는 경우 BatchPutDocument API를 사용하여 제출하는 각 문서에는 데이터 소스 ID와 실행 ID가 속성 또는 필드로 필요합니다. 자세한 내용은 사용자 지정 데이터 소스의 필수 속성을 참조하세요.

참고

각 문서 ID는 색인별로 고유해야 합니다. 고유한 ID로 문서를 인덱싱하는 데이터 소스를 만든 다음 BatchPutDocument API를 사용하여 동일한 문서를 인덱싱할 수 없으며 그 반대의 경우도 마찬가지입니다. 데이터 소스를 삭제한 다음 BatchPutDocument API를 사용하여 동일한 문서를 인덱싱하거나 그 반대로 할 수 있습니다. 동일한 문서 세트에 BatchPutDocumentBatchDeleteDocument API를 Amazon Kendra 데이터 소스 커넥터와 함께 사용하면 데이터와 일치하지 않을 수 있습니다. 대신, Amazon Kendra 사용자 지정 데이터 소스 커넥터를 사용하는 것이 좋습니다.

다음 개발자 가이드 문서는 문서를 인덱스에 직접 추가하는 방법을 보여줍니다.

BatchPutDocumentAPI로 문서 추가

다음 예제는 호출을 BatchPutDocument통해 색인에 텍스트 덩어리를 추가합니다. BatchPutDocumentAPI를 사용하여 색인에 직접 문서를 추가할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하십시오.

AWS CLI 및 SDK를 사용하여 색인을 만드는 예제는 색인 만들기를 참조하십시오. CLI 및 SDK를 설정하려면 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 버킷에서 문서 추가

BatchPutDocumentAPI를 사용하여 Amazon S3 버킷에서 색인에 직접 문서를 추가할 수 있습니다. 동일한 호출에 문서를 10개까지 추가할 수 있습니다. S3 버킷을 사용하는 경우 문서가 포함된 버킷에 액세스할 수 있는 권한이 있는 IAM 역할을 제공해야 합니다. RoleArn 파라미터에 역할을 지정합니다.

BatchPutDocumentAPI를 사용하여 Amazon S3 버킷에서 문서를 추가하는 것은 일회성 작업입니다. 인덱스를 버킷 콘텐츠와 동기화된 상태로 유지하려면 Amazon S3 데이터 소스를 생성하세요. 자세한 내용은 Amazon S3 데이터 소스를 참조하세요.

AWS CLI 및 SDK를 사용하여 인덱스를 만드는 예제는 인덱스 만들기를 참조하십시오. CLI 및 SDK를 설정하려면 Amazon Kendra 설정을 참조하세요. S3 버킷 생성에 대한 자세한 내용은 Amazon Simple Storage Service 설명서를 참조하세요.

다음 예제에서는 BatchPutDocument API를 사용하여 두 개의 Microsoft Word 문서를 인덱스에 추가합니다.

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("an-aws-kendra-test-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("an-aws-kendra-test-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)); } }