Ajouter des documents directement à un index avec téléchargement par lots - Amazon Kendra

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajouter des documents directement à un index avec téléchargement par lots

Vous pouvez ajouter des documents directement à un index à l'aide du BatchPutDocumentAPI. Vous ne pouvez pas ajouter de documents directement à l'aide de la console. Si vous utilisez la console, vous vous connectez à une source de données pour ajouter des documents à votre index. Les documents peuvent être ajoutés à partir d'un compartiment S3 ou fournis sous forme de données binaires. Pour une liste des types de documents pris en charge par la Amazon Kendra section Types de documents.

L'ajout de documents à un index en utilisant BatchPutDocument est une opération asynchrone. Après avoir appelé le BatchPutDocumentAPI, vous pouvez utiliser le BatchGetDocumentStatusAPIpour suivre la progression de l'indexation de vos documents. Lorsque vous appelez le BatchGetDocumentStatus API avec une liste de documentsIDs, il renvoie le statut du document. Lorsque le statut du document est INDEXED ouFAILED, le traitement du document est terminé. Lorsque le statut est définiFAILED, BatchGetDocumentStatus API renvoie la raison pour laquelle le document n'a pas pu être indexé.

Si vous souhaitez modifier le contenu et les champs ou attributs des métadonnées du document pendant le processus d'ingestion du document, consultez la section Enrichissement Amazon Kendra personnalisé des documents. Si vous souhaitez utiliser une source de données personnalisée, chaque document que vous soumettez à l'aide de celle-ci BatchPutDocument API nécessite un ID de source de données et un ID d'exécution sous forme d'attributs ou de champs. Pour plus d'informations, consultez la section Attributs obligatoires pour les sources de données personnalisées.

Note

Chaque identifiant de document doit être unique par index. Vous ne pouvez pas créer de source de données pour indexer vos documents avec leur caractère unique, IDs puis utiliser le BatchPutDocument API pour indexer les mêmes documents, ou vice versa. Vous pouvez supprimer une source de données, puis l'utiliser BatchPutDocument API pour indexer les mêmes documents, ou vice versa. L'utilisation du connecteur BatchPutDocument et BatchDeleteDocument APIs en combinaison avec un connecteur de source de Amazon Kendra données pour le même ensemble de documents peut entraîner des incohérences dans vos données. Nous vous recommandons plutôt d'utiliser le connecteur de source de données Amazon Kendra personnalisé.

Les documents suivants du guide du développeur montrent comment ajouter des documents directement à un index.

Ajouter des documents à l'aide du BatchPutDocument API

L'exemple suivant ajoute un blob de texte à un index en appelant BatchPutDocument. Vous pouvez utiliser le BatchPutDocument API pour ajouter des documents directement à votre index. Pour une liste des types de documents pris en charge par la Amazon Kendra section Types de documents.

Pour un exemple de création d'un index à l'aide du AWS CLI etSDKs, consultez la section Création d'un index. Pour configurer le CLI etSDKs, consultez la section Configuration Amazon Kendra.

Note

Les fichiers ajoutés à l'index doivent se trouver dans un flux codé de UTF -8 octets.

Dans les exemples suivants, le texte codé UTF -8 est ajouté à l'index.

CLI

Dans le AWS Command Line Interface, utilisez la commande suivante. La commande est formatée pour Linux et macOS. Si vous utilisez Windows, remplacez le caractère de continuation de ligne Unix (\) par un curseur (^).

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

Ajouter des documents depuis un compartiment S3

Vous pouvez ajouter des documents directement à votre index à partir d'un Amazon S3 bucket à l'aide du BatchPutDocumentAPI. Vous pouvez ajouter jusqu'à 10 documents au cours d'un même appel. Lorsque vous utilisez un compartiment S3, vous devez fournir un IAM rôle autorisé à accéder au compartiment contenant vos documents. Vous spécifiez le rôle dans le RoleArn paramètre.

L'utilisation du BatchPutDocumentAPIpour ajouter des documents à partir d'un Amazon S3 bucket ne s'effectue qu'une seule fois. Pour synchroniser un index avec le contenu d'un bucket, créez une source de Amazon S3 données. Pour plus d'informations, consultez la section Source de Amazon S3 données.

Pour un exemple de création d'un index à l'aide du AWS CLI etSDKs, consultez la section Création d'un index. Pour configurer le CLI etSDKs, consultez la section Configuration Amazon Kendra. Pour plus d'informations sur la création d'un compartiment S3, consultez Amazon Simple Storage Service la documentation.

Dans l'exemple suivant, deux documents Microsoft Word sont ajoutés à l'index à l'aide du 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)); } }