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

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

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

BatchPutDocument API를 사용하여 인덱스에 직접 문서를 추가할 수 있습니다. 콘솔을 사용하여 문서를 직접 추가할 수 없습니다. 콘솔을 사용하는 경우 데이터 소스에 연결하여 인덱스에 문서를 추가합니다. 문서는 S3 버킷에서 추가하거나 이진 데이터로 제공할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하세요. https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html

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

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

참고

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

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

BatchPutDocument를 사용하여 문서 추가 API

다음 예제에서는 BatchPutDocument를 호출하여 인덱스에 텍스트를 추가합니다. BatchPutDocument API를 사용하여 인덱스에 직접 문서를 추가할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하세요. https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html

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 버킷에서 문서 추가

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

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

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

다음 예제에서는 Word를 사용하여 두 개의 Microsoft BatchPutDocument 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)); } }