

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Despliegue Amazon Kendra
<a name="deploying"></a>

**nota**  
La compatibilidad de características varía según el tipo de índice y la API de búsqueda que se use. Para comprobar si esta característica es compatible con el tipo de índice y la API de búsqueda que usa, consulte [Tipos de índices](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

Cuando llegue el momento de implementar la Amazon Kendra búsqueda en tu sitio web, te proporcionamos el código fuente que puedes usar con React para empezar con tu aplicación. El código fuente se proporciona sin cargo alguno en virtud de una licencia del MIT modificada. Puede usarlo tal cual o cambiarlo según sus propias necesidades. La aplicación React proporcionada es un ejemplo para ayudarlo a comenzar. No es una aplicación lista para producción.

Para implementar una aplicación de búsqueda sin código y generar una URL de punto de conexión para su página de búsqueda con control de acceso, consulte [Amazon Kendra Experience Builder](https://docs.aws.amazon.com/kendra/latest/dg/deploying-search-experience-no-code.html).

El siguiente código de ejemplo añade la Amazon Kendra búsqueda a una aplicación web de React existente:
+ [https://kendrasamples.s3.amazonaws.com/kendrasamples-react-app.zip](https://kendrasamples.s3.amazonaws.com/kendrasamples-react-app.zip): archivos de muestra que los desarrolladores pueden usar para crear una experiencia de búsqueda funcional en su aplicación web React existente.

Los ejemplos se basan en la página de búsqueda de la consola. Amazon Kendra Tienen las mismas características para buscar y mostrar los resultados de búsqueda. Puede usar el ejemplo completo o elegir solo una de las características para su propio uso.

Para ver los tres componentes de la página de búsqueda en la Amazon Kendra consola, selecciona el icono de código (**</>**) en el menú de la derecha. Sitúe el puntero del ratón sobre cada sección para ver una breve descripción del componente y obtener la URL de la fuente del componente.

**Topics**
+ [

## Descripción general de
](#example-overview)
+ [

## Requisitos previos
](#example-prereqs)
+ [

## Configurar el ejemplo
](#example-install)
+ [

## Página de búsqueda principal
](#main-component)
+ [

## Componente de búsqueda
](#search-component)
+ [

## Componente de resultados
](#results-component)
+ [

## Componente de facetas
](#facets-component)
+ [

## Componente de paginación
](#pagination-component)
+ [

# Creación de una experiencia de búsqueda sin código
](deploying-search-experience-no-code.md)

## Descripción general de
<a name="example-overview"></a>

Para activar la búsqueda, agrega el código de ejemplo a una aplicación web de React existente. El código de ejemplo incluye un archivo Readme con los pasos para configurar un nuevo entorno de desarrollo de React. Los datos de ejemplo del código de ejemplo se pueden usar para demostrar una búsqueda. Los archivos y componentes de búsqueda del código de ejemplo se estructuran de la siguiente manera:
+ Página de búsqueda principal (`Search.tsx`): es la página principal que contiene todos los componentes. Aquí es donde se integra la aplicación con la Amazon Kendra API.
+ Barra de búsqueda: es el componente en el que el usuario introduce un término de búsqueda y llama a la función de búsqueda.
+ Resultados: este es el componente desde el que se muestran los resultados. Amazon Kendra Tiene tres componentes: respuestas sugeridas, resultados de preguntas frecuentes y documentos recomendados.
+ Facetas: este es el componente que muestra las facetas en los resultados de la búsqueda y permite elegir una faceta para restringir la búsqueda.
+ Paginación: este es el componente desde el que se pagina la respuesta de Amazon Kendra.

## Requisitos previos
<a name="example-prereqs"></a>

Antes de comenzar, necesitará lo siguiente:
+ Node.js y npm [instalados](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Se requiere la versión 19 o anterior de Node.js.
+ Python 3 o Python 2 [descargados e instalados](https://www.python.org/downloads/).
+ [SDK para Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html) o [AWS SDK para JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/welcome.html) para realizar llamadas a la API a Amazon Kendra.
+ Una aplicación web de React existente. El código de ejemplo incluye un archivo Readme con los pasos sobre cómo configurar un nuevo entorno de desarrollo de React, incluido utilizar los marcos/bibliotecas necesarios. También puede seguir las instrucciones de inicio rápido de la [documentación de React para crear una aplicación web de React](https://create-react-app.dev/docs/getting-started).
+ Las bibliotecas y dependencias necesarias configuradas en su entorno de desarrollo. El código de ejemplo incluye un archivo Readme que enumera las bibliotecas y las dependencias de paquetes necesarias. Tenga en cuenta que `sass` es obligatorio, ya que `node-sass` está obsoleto. Si instaló anteriormente `node-sass`, desinstálelo e instale `sass`.

## Configurar el ejemplo
<a name="example-install"></a>

Un procedimiento completo para añadir una Amazon Kendra búsqueda a una aplicación de React se encuentra en el archivo readme incluido en el ejemplo de código.

**Para empezar a usar .zip kendrasamples-react-app**

1. Asegúrese de haber completado los [Requisitos previos](#example-prereqs), incluida la descarga e instalación de Node.js y npm.

1. Descarga kendrasamples-react-app .zip y descomprímelo.

1. Abra su terminal y vaya a `aws-kendra-example-react-app/src/services/`. Abra `local-dev-credentials.json` y proporcione sus credenciales. No añada este archivo a ningún repositorio público.

1. Vaya a `aws-kendra-example-react-app` e instale las dependencias en `package.json`. Ejecute `npm install`.

1. Inicie una versión de demostración de la aplicación en su servidor local. Ejecute `npm start`. Puede detener el servidor local ingresando en su teclado `Cmd/Ctrl + C`.

1. Para cambiar el puerto o el host (por ejemplo, la dirección IP), vaya a `package.json` y actualice el host y el puerto: `"start": "HOST=[host] PORT=[port] react-scripts start"`. Si utiliza Windows: `"start": "set HOST=[host] && set PORT=[port] && react-scripts start"`.

1. Si tiene un dominio de sitio web registrado, puede especificarlo en `package.json` después del nombre de su aplicación. Por ejemplo, `"homepage": "https://mywebsite.com"`. Debe volver a ejecutar `npm install` para actualizar las nuevas dependencias y, a continuación, ejecutar `npm start`.

1. Para compilar la aplicación, ejecute `npm build`. Cargue el contenido del directorio de compilación a su proveedor de alojamiento.
**aviso**  
La aplicación React **no** está lista para producción. Es un ejemplo de cómo implementar una aplicación de búsqueda Amazon Kendra .

## Página de búsqueda principal
<a name="main-component"></a>

La página de búsqueda principal (`Search.tsx`) contiene todos los componentes de búsqueda de ejemplo. Incluye el componente de barra de búsqueda para la salida, los componentes de resultados para mostrar la respuesta de la API [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) y un componente de paginación para paginar la respuesta.

## Componente de búsqueda
<a name="search-component"></a>

El componente de búsqueda proporciona un cuadro de texto para introducir el texto de la consulta. La función `onSearch` es un enlace que llama a la función principal en `Search.tsx` para realizar la llamada a la API de [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) de Amazon Kendra .

## Componente de resultados
<a name="results-component"></a>

El componente de resultados muestra la respuesta de la API `Query`. Los resultados se muestran en tres áreas distintas.
+ Respuestas sugeridas: estos son los principales resultados devueltos por la API `Query`. Contiene hasta tres respuestas sugeridas. En la respuesta, tienen el tipo de resultado `ANSWER`.
+ Respuestas a las preguntas frecuentes: son los resultados de las preguntas frecuentes que arroja la respuesta. FAQs se añaden al índice por separado. En la respuesta, tienen el tipo `QUESTION_ANSWER`. Para obtener más información, consulte [Preguntas y respuestas](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html). 
+ Documentos recomendados: son documentos adicionales que aparecen en Amazon Kendra la respuesta. En la respuesta de la API `Query`, tienen el tipo `DOCUMENT`.

Los componentes de resultados comparten un conjunto de componentes para características como el resaltado, los títulos, los enlaces, etc. Los componentes compartidos deben estar presentes para que los componentes de resultados funcionen. 

## Componente de facetas
<a name="facets-component"></a>

El componente de facetas muestra las facetas disponibles en los resultados de la búsqueda. Cada faceta clasifica la respuesta en función de una dimensión específica, como el autor. Puede restringir la búsqueda a una faceta específica seleccionando una de la lista.

Tras seleccionar una faceta, el componente llama a `Query` con un filtro de atributos que restringe la búsqueda a los documentos que coincidan con la faceta.

## Componente de paginación
<a name="pagination-component"></a>

El componente de paginación le permite mostrar los resultados de búsqueda de la API `Query` en varias páginas. Llama a la API `Query` con los parámetros `PageSize` y `PageNumber` para obtener una página de resultados específica.

# Creación de una experiencia de búsqueda sin código
<a name="deploying-search-experience-no-code"></a>

Puede crear e implementar una aplicación Amazon Kendra de búsqueda sin necesidad de ningún código de interfaz. Amazon Kendra *Experience Builder* le ayuda a crear e implementar una aplicación de búsqueda completamente funcional con unos pocos clics para que pueda empezar a buscar de inmediato. Puede personalizar el diseño de la página de búsqueda y ajustar la búsqueda para adaptar la experiencia a las necesidades de sus usuarios. Amazon Kendra genera una URL de punto final única y totalmente alojada de su página de búsqueda para empezar a buscar en sus documentos y FAQs. Puede crear rápidamente una prueba de concepto de su experiencia de búsqueda y compartirla con otros usuarios.

Utiliza la plantilla de experiencia de búsqueda disponible en el generador para personalizar la búsqueda. Puede invitar a otras personas a colaborar en la creación de su experiencia de búsqueda o a evaluar los resultados de la búsqueda con fines de ajuste. Una vez que la experiencia de búsqueda esté lista para que los usuarios comiencen a buscar, solo tiene que compartir la URL del punto de conexión seguro.

## Cómo funciona la búsqueda de Experience Builder
<a name="how-search-experience-builder-works"></a>

El proceso general de crear una experiencia de búsqueda es el siguiente:

1. Para crear su experiencia de búsqueda, debe asignarle un nombre, una descripción y elegir los orígenes de datos que desee utilizar en la experiencia de búsqueda.

1. Puede configurar su lista de usuarios y grupos en AWS IAM Identity Center y, a continuación, asignarles derechos de acceso a su experiencia de búsqueda. Se incluye a usted mismo como propietario de la experiencia. Para obtener más información, consulte [Proporcionar acceso a la página de búsqueda](#access-search-experience).

1. Abre el Amazon Kendra Experience Builder para diseñar y ajustar la página de búsqueda. Puede compartir la URL del punto de conexión de su experiencia de búsqueda con otras personas a las que asigne derechos de acceso propios para editar o ver la búsqueda.

Utiliza la [CreateExperience](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateExperience.html)API para crear y configurar su experiencia de búsqueda. Si usa la consola, selecciona su índice y, a continuación, selecciona **Experiencias** en el menú de navegación para configurar su experiencia.

## Diseñe y ajuste su experiencia de búsqueda
<a name="design-tune-search-experience"></a>

Una vez que haya creado y configurado su experiencia de búsqueda, abra la experiencia de búsqueda mediante una URL de punto de conexión para empezar a personalizar la búsqueda como propietario con derechos de acceso de editor. Escribe la consulta en el cuadro de búsqueda y, a continuación, personaliza la búsqueda mediante las opciones de edición del panel lateral para ver cómo se aplican a su página. Cuando esté listo para publicar, seleccione **Publicar**. También puede cambiar entre **Cambiar a la visualización en directo**, para ver la última versión publicada de la página de búsqueda, y **Cambiar al modo de compilación**, para editar o personalizar la página de búsqueda.

Las siguientes son formas en las que puede personalizar su experiencia de búsqueda.

### Filtro
<a name="search-experience-filter"></a>

Añada una búsqueda por facetas o filtre por atributos del documento. Esto incluye atributos personalizados. Puede añadir un filtro mediante sus propios campos de metadatos configurados. Por ejemplo, para buscar facetas por cada categoría de ciudad, utilice un atributo de documento personalizado `_category` que contenga todas las categorías de ciudades.

### Respuesta sugerida
<a name="search-experience-suggested-answer"></a>

Agrega respuestas generadas por machine learning a las consultas de tus usuarios. Por ejemplo, *«¿Qué tan difícil es este curso?»* . Amazon Kendra puede recuperar el texto más relevante de todos los documentos que hacen referencia a la dificultad de un curso y sugerir la respuesta más relevante.

### Preguntas frecuentes
<a name="search-experience-faq"></a>

Agregue un documento de preguntas frecuentes para proporcionar respuestas a las preguntas más frecuentes. Por ejemplo, *«¿Cuántas horas se necesitan para completar este curso?»* . Amazon Kendra puede utilizar el documento de preguntas frecuentes que contiene la respuesta a esta pregunta y dar la respuesta correcta.

### Ordenar
<a name="search-experience-sort"></a>

Añada una clasificación de los resultados de la búsqueda para que los usuarios puedan organizarlos por relevancia, hora de creación, hora de la última actualización y otros criterios de clasificación.

### Documentos
<a name="search-experience-documents"></a>

Configure cómo se muestran los documentos o los resultados de la búsqueda en la página de búsqueda. Puede configurar el número de resultados que se muestran en la página, incluir la paginación (por ejemplo, los números de página), activar un botón de comentarios de los usuarios y organizar la forma en que se muestran los campos de metadatos de los documentos en los resultados de la búsqueda.

### Idioma
<a name="search-experience-language"></a>

Seleccione un idioma para filtrar los resultados de la búsqueda o los documentos en el idioma seleccionado.

### Cuadro de búsqueda
<a name="search-experience-search-box"></a>

Configura el tamaño y el texto del marcador de posición del cuadro de búsqueda, además de permitir sugerencias de consultas.

### Ajuste de relevancia
<a name="search-experience-relevance-tuning"></a>

Añada potenciación a los campos de metadatos de los documentos para darles más peso cuando los usuarios busquen documentos. Puede añadir un peso que comience en 1 y aumente gradualmente hasta 10. Puede potenciar los tipos de campos de texto, fecha y numéricos. Por ejemplo, para dar a `_last_updated_at` y `_created_at` más peso o importancia que a otros campos, asigne a estos campos un peso de 1 a 10, según su importancia. Puede aplicar diferentes configuraciones de ajuste de relevancia para cada aplicación o experiencia de búsqueda.

## Proporcionar acceso a la página de búsqueda
<a name="access-search-experience"></a>

El acceso a su experiencia de búsqueda se realiza a través de IAM Identity Center. Cuando configura su experiencia de búsqueda, permite que otras personas incluidas en el directorio de su Centro de identidad accedan a su página Amazon Kendra de búsqueda. Estas reciben un correo electrónico en el que se les indica que inicien sesión con sus credenciales en IAM Identity Center para acceder a la página de búsqueda. Debe configurar IAM Identity Center en la organización o en el titular de la cuenta en AWS Organizations. Para obtener más información sobre configurar IAM Identity Center, consulte [Primeros pasos con IAM Identity Center](https://docs.aws.amazon.com/kendra/latest/dg/getting-started-aws-sso.html).

Puede activar las identidades de los usuarios en IAM Identity Center con su experiencia de búsqueda y asignar permisos de acceso de *Lector* o *Propietario* mediante la API o la consola.
+ **Lector**: se le permite realizar consultas, recibir sugerencias de respuestas relacionadas con su búsqueda y contribuir con sus comentarios a Amazon Kendra para seguir mejorando la búsqueda.
+ **Propietario**: se le permite personalizar el diseño de la página de búsqueda, ajustar la búsqueda y utilizar la aplicación de búsqueda como *Lector*. Actualmente, no se admite la desactivación del acceso a los lectores en la consola.

Para asignar a otras personas el acceso a su experiencia de búsqueda, primero debe activar las identidades de usuario en el Centro de Identidad de IAM con su Amazon Kendra experiencia mediante el [ExperienceConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_ExperienceConfiguration.html)objeto. Debe especificar el nombre del campo que contiene los identificadores de sus usuarios, como el nombre de usuario o la dirección de correo electrónico. A continuación, concedes a tu lista de usuarios acceso a tu experiencia de búsqueda mediante la [AssociateEntitiesToExperience](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AssociateEntitiesToExperience.html)API y defines sus permisos como *espectadores* o *propietarios* mediante la [AssociatePersonasToEntities](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AssociatePersonasToEntities.html)API. Especificas cada usuario o grupo que usa el [EntityConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_EntityConfiguration.html)objeto y si ese usuario o grupo es un *espectador* o un *propietario* que usa el [EntityPersonaConfiguraton](https://docs.aws.amazon.com/kendra/latest/APIReference/API_EntityPersonaConfiguration.html)objeto.

Para asignar a otras personas acceso a su experiencia de búsqueda mediante la consola, primero debe crear una experiencia y confirmar su identidad y que usted es el propietario. A continuación, puede asignar a otros usuarios o grupos como lectores o propietarios. En la consola, seleccione su índice y, a continuación, seleccione **Experiencias** en el menú de navegación. Tras crear la experiencia, puede seleccionarla de la lista. Vaya a **Administración de acceso** para asignar usuarios o grupos como lectores o propietarios.

## Configurar una experiencia de búsqueda
<a name="config-search-experience"></a>

A continuación se muestra un ejemplo de configuración o creación de una experiencia de búsqueda.

------
#### [ Console ]

**Para crear una experiencia Amazon Kendra de búsqueda**

1. En el panel de navegación izquierdo, en **Índices**, seleccione **Experiencias** y, a continuación, seleccione **Crear experiencia**.

1. En la página **Configurar experiencia**, introduzca un nombre y una descripción para su experiencia, elija sus fuentes de contenido y elija el rol de IAM para su experiencia. Para obtener más información sobre las funciones de IAM, consulte Funciones de [IAM para Amazon Kendra conocer las](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html) experiencias.

1. En la página **Confirmar su identidad desde un directorio de Identity Center**, seleccione su ID de usuario, como su correo electrónico. Si no tiene un directorio de Identity Center, simplemente introduzca su nombre completo y su correo electrónico para crear un directorio de Identity Center. Esto lo incluye como usuario de la experiencia y le asigna automáticamente derechos de acceso de propietario.

1. En la página **Revisar para abrir Experience Builder**, revise los detalles de configuración y seleccione **Crear experiencia y abrir Experience Builder** para empezar a editar la página de búsqueda.

------
#### [ CLI ]

**Para crear una experiencia de Amazon Kendra **

```
aws kendra create-experience \
 --name experience-name \
 --description "experience description" \
 --index-id index-id \
 --role-arn arn:aws:iam::account-id:role/role-name \
 --configuration '{"ExperienceConfiguration":[{"ContentSourceConfiguration":{"DataSourceIds":["data-source-1","data-source-2"]}, "UserIdentityConfiguration":"identity attribute name"}]}' 

aws kendra describe-experience \
 --endpoints experience-endpoint-URL(s)
```

------
#### [ Python ]

**Para crear una experiencia de Amazon Kendra **

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time

kendra = boto3.client("kendra")

print("Create an experience.")

# Provide a name for the experience
name = "experience-name"
# Provide an optional description for the experience
description = "experience description"
# Provide the index ID for the experience
index_id = "index-id"
# Provide the IAM role ARN required for Amazon Kendra experiences
role_arn = "arn:aws:iam::${account-id}:role/${role-name}"
# Configure the experience
configuration = {"ExperienceConfiguration":
        [{
            "ContentSourceConfiguration":{"DataSourceIds":["data-source-1","data-source-2"]},
            "UserIdentityConfiguration":"identity attribute name"
        }]
    }

try:
    experience_response = kendra.create_experience(
        Name = name,
        Description = description,
        IndexId = index_id,
        RoleArn = role_arn,
        Configuration = configuration
    )

    pprint.pprint(experience_response)

    experience_endpoints = experience_response["Endpoints"]

    print("Wait for Amazon Kendra to create the experience.")

    while True:
        # Get the details of the experience, such as the status
        experience_description = kendra.describe_experience(
            Endpoints = experience_endpoints
        )
        status = experience_description["Status"]
        print(" Creating experience. Status: "+status)
        time.sleep(60)
        if status != "CREATING":
            break

except  ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------
#### [ Java ]

**Para crear un Amazon Kendra**

```
package com.amazonaws.kendra;

import java.util.concurrent.TimeUnit;
import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.CreateExperienceRequest;
import software.amazon.awssdk.services.kendra.model.CreateExperienceResponse;
import software.amazon.awssdk.services.kendra.model.DescribeExperienceRequest;
import software.amazon.awssdk.services.kendra.model.DescribeExperienceResponse;
import software.amazon.awssdk.services.kendra.model.ExperienceStatus;


public class CreateExperienceExample {

    public static void main(String[] args) throws InterruptedException {
        System.out.println("Create an experience");
        
        String experienceName = "experience-name";
        String experienceDescription = "experience description";
        String indexId = "index-id";
        String experienceRoleArn = "arn:aws:iam::account-id:role/role-name";

        KendraClient kendra = KendraClient.builder().build();
        
        CreateExperienceRequest createExperienceRequest = CreateExperienceRequest 
            .builder()
            .name(experienceName)
            .description(experienceDescription)
            .roleArn(experienceRoleArn)
            .configuration(
                ExperienceConfiguration
                    .builder()
                    .contentSourceConfiguration(
                        ContentSourceConfiguration(
                            .builder()
                            .dataSourceIds("data-source-1","data-source-2")
                            .build()
                        )
                    )
                    .userIdentityConfiguration(
                        UserIdentityConfiguration(
                            .builder()
                            .identityAttributeName("identity-attribute-name")
                            .build()
                        )
                    ).build()
            ).build();
        
        CreateExperienceResponse createExperienceResponse = kendra.createExperience(createExperienceRequest);
        System.out.println(String.format("Experience response %s", createExperienceResponse));

        String experienceEndpoints = createExperienceResponse.endpoints();

        System.out.println(String.format("Wait for Kendra to create the experience.", experienceEndpoints));
        while (true) {
            DescribeExperienceRequest describeExperienceRequest = DescribeExperienceRequest.builder().endpoints(experienceEndpoints).build();
            DescribeExperienceResponse describeEpxerienceResponse = kendra.describeExperience(describeExperienceRequest);
            ExperienceStatus status = describeExperienceResponse.status();
            TimeUnit.SECONDS.sleep(60);
            if (status != ExperienceStatus.CREATING) {
                break;
            }
        }

        System.out.println("Experience creation is complete.");
    }
}
```

------