Aggiungere documenti direttamente a un indice con caricamento in batch - Amazon Kendra

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiungere documenti direttamente a un indice con caricamento in batch

È possibile aggiungere documenti direttamente a un indice utilizzando BatchPutDocumentAPI. Non è possibile aggiungere documenti direttamente utilizzando la console. Se usi la console, ti connetti a una fonte di dati per aggiungere documenti all'indice. I documenti possono essere aggiunti da un bucket S3 o forniti come dati binari. Per un elenco dei tipi di documenti supportati da, Amazon Kendra consulta Tipi di documenti.

L'aggiunta di documenti a un indice utilizzando BatchPutDocument è un'operazione asincrona. Dopo aver chiamato il BatchPutDocumentAPI, si utilizza il BatchGetDocumentStatusAPIper monitorare lo stato di avanzamento dell'indicizzazione dei documenti. Quando si chiama BatchGetDocumentStatus API con un elenco di documentiIDs, restituisce lo stato del documento. Quando lo stato del documento è INDEXED oFAILED, l'elaborazione del documento è completa. Quando lo stato èFAILED, BatchGetDocumentStatus API restituisce il motivo per cui il documento non può essere indicizzato.

Se desideri modificare i campi o gli attributi dei metadati del contenuto e del documento durante il processo di inserimento del documento, consulta Custom Document Enrichment.Amazon Kendra Se desideri utilizzare un'origine dati personalizzata, ogni documento inviato utilizzando la BatchPutDocument API richiede un ID dell'origine dati e un ID di esecuzione come attributi o campi. Per ulteriori informazioni, consulta Attributi obbligatori per le origini dati personalizzate.

Nota

L'ID di ogni documento deve essere univoco per indice. Non è possibile creare un'origine dati per indicizzare i documenti in modo univoco IDs e quindi utilizzarla BatchPutDocument API per indicizzare gli stessi documenti o viceversa. È possibile eliminare un'origine dati e quindi utilizzarla BatchPutDocument API per indicizzare gli stessi documenti o viceversa. L'utilizzo BatchPutDocument e BatchDeleteDocument APIs in combinazione con un connettore di origine Amazon Kendra dati per lo stesso set di documenti potrebbe causare incongruenze con i dati. Consigliamo invece di utilizzare il connettore di origine dati Amazon Kendra personalizzato.

I seguenti documenti della guida per sviluppatori mostrano come aggiungere documenti direttamente a un indice.

Aggiungere documenti con BatchPutDocument API

L'esempio seguente aggiunge un blob di testo a un indice BatchPutDocumentchiamando. È possibile utilizzare il BatchPutDocument API per aggiungere documenti direttamente all'indice. Per un elenco dei tipi di documenti supportati da, Amazon Kendra vedi Tipi di documenti.

Per un esempio di creazione di un indice utilizzando AWS CLI andSDKs, consultate Creazione di un indice. Per configurare l'CLIandSDKs, consulta Configurazione Amazon Kendra.

Nota

I file aggiunti all'indice devono essere in un flusso di byte con codifica a UTF -8.

Negli esempi seguenti, all'indice viene aggiunto un testo codificato a UTF -8.

CLI

Nel AWS Command Line Interface, utilizzare il comando seguente. Il comando è formattato per Linux e macOS. Se utilizzate Windows, sostituite il carattere di continuazione della riga Unix (\) con un accento circonflesso (^).

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)); } }

Aggiungere documenti da un bucket S3

Puoi aggiungere documenti direttamente al tuo indice da un Amazon S3 bucket utilizzando il. BatchPutDocumentAPI È possibile aggiungere fino a 10 documenti nella stessa chiamata. Quando utilizzi un bucket S3, devi fornire un IAM ruolo con l'autorizzazione ad accedere al bucket che contiene i tuoi documenti. Specificate il ruolo nel parametro. RoleArn

L'utilizzo BatchPutDocumentAPIdi per aggiungere documenti da un Amazon S3 bucket è un'operazione che si effettua una sola volta. Per mantenere un indice sincronizzato con il contenuto di un bucket, crea una fonte di dati. Amazon S3 Per ulteriori informazioni, consulta la fonte Amazon S3 dei dati.

Per un esempio di creazione di un indice utilizzando AWS CLI andSDKs, consulta Creazione di un indice. Per configurare l'CLIandSDKs, consulta Configurazione Amazon Kendra. Per informazioni sulla creazione di un bucket S3, consulta Amazon Simple Storage Service la documentazione.

Nell'esempio seguente, due documenti di Microsoft Word vengono aggiunti all'indice utilizzando BatchPutDocumentAPI.

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)); } }