Como adicionar documentos diretamente a um índice com o upload em lote. - Amazon Kendra

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como adicionar documentos diretamente a um índice com o upload em lote.

Você pode adicionar documentos diretamente a um índice usando BatchPutDocumentAPIo. Você não pode excluir documentos diretamente usando o console. Se você usa o console, você se conecta a uma fonte de dados para adicionar documentos ao seu índice. Os documentos podem ser adicionados de um bucket do S3 ou fornecidos como dados binários. Para obter uma lista dos tipos de documentos suportados pelo, Amazon Kendra consulte Tipos de documentos.

A adição de documentos a um índice usando BatchPutDocument é uma operação assíncrona. Depois de ligar para o BatchPutDocumentAPI, você usa o BatchGetDocumentStatusAPIpara monitorar o progresso da indexação de seus documentos. Quando você chama o BatchGetDocumentStatus API com uma lista de documentosIDs, ele retorna o status do documento. Quando o status do documento é INDEXED ou FAILED, o processamento do documento está concluído. Quando o status éFAILED, ele BatchGetDocumentStatus API retorna o motivo pelo qual o documento não pôde ser indexado.

Se você quiser alterar os metadados ou os atributos e o conteúdo do documento durante o processo de absorção do documento, consulte Enriquecimento personalizado de documentos no Amazon Kendra. Se você quiser usar uma fonte de dados personalizada, cada documento enviado usando a BatchPutDocument API exige uma ID de fonte de dados e uma ID de execução como atributos ou campos. Para obter mais informações, consulte Atributos obrigatórios para fontes de dados personalizadas.

nota

Cada ID de documento deve ser exclusiva por índice. Você não pode criar uma fonte de dados para indexar seus documentos com seus documentos exclusivos IDs e, em seguida, usá-la BatchPutDocument API para indexar os mesmos documentos ou vice-versa. Você pode excluir uma fonte de dados e depois usar o BatchPutDocument API para indexar os mesmos documentos ou vice-versa. Usar o BatchPutDocument e BatchDeleteDocument APIs em combinação com um conector de fonte de Amazon Kendra dados para o mesmo conjunto de documentos pode causar inconsistências com seus dados. Em vez disso, recomendamos usar o conector de fonte de dados personalizado do Amazon Kendra.

Os seguintes documentos do guia do desenvolvedor mostram como adicionar documentos diretamente a um índice:

Adicionando documentos com o BatchPutDocument API

O exemplo a seguir adiciona uma bolha de texto a um índice BatchPutDocumentchamando. Você pode usar o BatchPutDocument API para adicionar documentos diretamente ao seu índice. Para obter uma lista dos tipos de documentos suportados pelo, Amazon Kendra consulte Tipos de documentos.

Para ver um exemplo de criação de um índice usando AWS CLI eSDKs, consulte Criação de um índice. Para configurar o CLI eSDKs, consulte Configuração Amazon Kendra.

nota

Os arquivos adicionados ao índice devem estar em um fluxo de bytes codificado em UTF -8.

Nos exemplos a seguir, o texto codificado em UTF -8 é adicionado ao índice.

CLI

No AWS Command Line Interface, use o comando a seguir. O comando a seguir é formatado para Linux e macOS. Para Windows, substitua o caractere de continuação de linha do Unix (\) pelo circunflexo (^).

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

Adicionar documentos de um bucket do S3

Você pode adicionar documentos diretamente ao seu índice a partir Amazon S3 de um bucket usando BatchPutDocumentAPIo. Você pode inserir até 10 documentos na mesma chamada. Ao usar um bucket do S3, você deve fornecer uma IAM função com permissão para acessar o bucket que contém seus documentos. Você especifica a função com o parâmetro RoleArn.

Usar o BatchPutDocumentAPIpara adicionar documentos de um Amazon S3 bucket é uma operação única. Para manter um índice sincronizado com o conteúdo de um bucket, crie uma fonte de Amazon S3 dados. Para obter mais informações, consulte fonte de dados do Amazon S3.

Para ver um exemplo de criação de um índice usando AWS CLI eSDKs, consulte Criação de um índice. Para configurar o CLI eSDKs, consulte Configuração Amazon Kendra. Para obter informações sobre como criar um bucket do S3, consulte a documentação do Amazon Simple Storage Service.

No exemplo a seguir, dois documentos do Microsoft Word são adicionados ao índice usando BatchPutDocument API o.

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