

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.

# Tutorial: Creación y búsqueda de documentos en Amazon OpenSearch Service
<a name="quick-start"></a>

En este tutorial, aprenderás a crear y buscar un documento en Amazon OpenSearch Service. Los datos se añaden a un índice en forma de documento JSON. OpenSearch El servicio crea un índice alrededor del primer documento que se agrega.

Este tutorial explica cómo llevar a cabo solicitudes HTTP para crear documentos, generar automáticamente un ID para un documento y hacer búsquedas básicas y avanzadas en los documentos.

**nota**  
En este tutorial, se utiliza un dominio de acceso abierto. Para obtener el máximo nivel de seguridad, es recomendable que coloque su dominio dentro de una nube privada virtual (VPC).

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

Este tutorial tiene los requisitos previos siguientes:
+ Debe tener un Cuenta de AWS.
+ Debe tener un dominio de OpenSearch servicio activo.

## Adición de un documento a un índice
<a name="quick-start-create"></a>

Para añadir un documento a un índice, puede utilizar cualquier herramienta HTTP, como [Postman](https://www.getpostman.com/), cURL o OpenSearch la consola Dashboards. En estos ejemplos se supone que está utilizando la consola de desarrollador en Dashboards. OpenSearch Si utiliza una herramienta diferente, ajústela según corresponda proporcionando la URL completa y las credenciales, si es necesario.

**Para agregar un documento a un índice**

1. Navega hasta la URL de los OpenSearch paneles de control de tu dominio. Puedes encontrar la URL en el panel de control del dominio, en la consola OpenSearch de servicio. La URL tiene este formato:

   ```
   domain-endpoint/_dashboards/
   ```

1. Inicie sesión con su nombre de usuario y contraseña principales.

1. Abra el panel de navegación izquierdo y elija **Herramientas para desarrolladores**.

1. El verbo HTTP para crear un nuevo recurso es PUT, que es lo que se utiliza para crear un nuevo documento e índice. Ingrese el siguiente comando en la consola:

   ```
   PUT fruit/_doc/1
   {
     "name":"strawberry",
     "color":"red"
   }
   ```

   La solicitud `PUT` crea un índice llamado *fruit* (fruta) y agrega un solo documento al índice con un ID de 1. Produce la siguiente respuesta:

   ```
   {
     "_index" : "fruit",
     "_type" : "_doc",
     "_id" : "1",
     "_version" : 1,
     "result" : "created",
     "_shards" : {
       "total" : 2,
       "successful" : 2,
       "failed" : 0
     },
     "_seq_no" : 0,
     "_primary_term" : 1
   }
   ```

## La creación se genera automáticamente IDs
<a name="quick-start-id"></a>

OpenSearch El servicio puede generar automáticamente una identificación para sus documentos. El comando que se genera IDs utiliza una solicitud POST en lugar de una solicitud PUT y no requiere ningún identificador de documento (en comparación con la solicitud anterior). 

Ingrese la siguiente solicitud en la consola para desarrolladores:

```
POST veggies/_doc
{
  "name":"beet",
  "color":"red",
  "classification":"root"
}
```

Esta solicitud crea un índice denominado *veggies* (verduras) y agrega el documento al índice. Produce la siguiente respuesta:

```
{
  "_index" : "veggies",
  "_type" : "_doc",
  "_id" : "3WgyS4IB5DLqbRIvLxtF",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}
```

Tenga en cuenta el campo `_id` adicional de la respuesta, que indica que se creó un ID automáticamente.

**nota**  
No proporcione nada después de `_doc` en la URL, donde normalmente va el ID. Como va a crear un documento con un ID generado, aún no debe proporcionar uno. Eso está reservado para actualizaciones. 

## Actualización de un documento con un comando POST
<a name="quick-start-update"></a>

Para actualizar un documento, se utiliza un comando `POST` de HTTP con el número de ID.

En primer lugar, cree un documento con un ID de `42`:

```
POST fruits/_doc/42
{
  "name":"banana",
  "color":"yellow"
}
```

A continuación, utilice ese ID para actualizar el documento:

```
POST fruits/_doc/42
{
  "name":"banana",
  "color":"yellow",
  "classification":"berries"
}
```

Este comando actualiza el documento con el nuevo campo `classification`. Produce la siguiente respuesta:

```
{
  "_index" : "fruits",
  "_type" : "_doc",
  "_id" : "42",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}
```

**nota**  
Si intenta actualizar un documento que no existe, OpenSearch Service lo crea.

## Ejecución de acciones por lotes
<a name="quick-start-bulk"></a>

Puede utilizar la operación de la API de `POST _bulk` para llevar a cabo varias acciones en uno o más índices en una solicitud. Los comandos de acción por lotes tienen el siguiente formato:

```
POST /_bulk
<action_meta>\n
<action_data>\n
<action_meta>\n
<action_data>\n
```

Cada acción requiere dos líneas de JSON. Primero, debe proporcionar la descripción de la acción o los metadatos. En la línea siguiente, debe proporcionar los datos. Cada parte está separada por una nueva línea (\$1n). La descripción de una acción de una inserción podría verse de la siguiente manera:

```
{ "create" : { "_index" : "veggies", "_type" : "_doc", "_id" : "7" } }
```

La línea siguiente que contiene los datos podría verse de la siguiente manera:

```
{ "name":"kale", "color":"green", "classification":"leafy-green" }
```

En conjunto, los metadatos y los datos representan una sola acción en una operación masiva. Puede llevar a cabo muchas operaciones en una sola solicitud, como esta:

```
POST /_bulk
{ "create" : { "_index" : "veggies", "_id" : "35" } }
{ "name":"kale", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "36" } }
{ "name":"spinach", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "37" } }
{ "name":"arugula", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "38" } }
{ "name":"endive", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "39" } }
{ "name":"lettuce", "color":"green", "classification":"leafy-green" }
{ "delete" : { "_index" : "vegetables", "_id" : "1" } }
```

Observe que la última acción es `delete`. No hay datos después de la acción `delete`.

## Búsqueda de documentos
<a name="quick-start-search"></a>

Ya que existen datos en el clúster, puede buscarlos. Por ejemplo, es posible que quiera buscar todos los tubérculos, obtener un recuento de todos los vegetales de hoja verde o encontrar la cantidad de errores registrados por hora.

**Búsquedas básicas**

Una búsqueda básica tiene un aspecto similar a este:

```
GET veggies/_search?q=name:l*
```

La solicitud produce una respuesta JSON que contiene el documento de lechuga.

**Búsquedas avanzadas**

Puede hacer búsquedas más avanzadas si proporciona las opciones de consulta como JSON en el cuerpo de la solicitud:

```
GET veggies/_search
{
  "query": {
    "term": {
      "name": "lettuce"
    }
  }
}
```

Este ejemplo también produce una respuesta JSON con el documento de lechuga.

**Ordenar**

Puede llevar a cabo más consultas de este tipo mediante la acción de ordenar. En primer lugar, debe volver a crear el índice porque la asignación automática de campos eligió tipos que no se pueden ordenar de forma predeterminada. Envíe las siguientes solicitudes para eliminar y volver a crear el índice:

```
DELETE /veggies

PUT /veggies
{
   "mappings":{
      "properties":{
         "name":{
            "type":"keyword"
         },
         "color":{
            "type":"keyword"
         },
         "classification":{
            "type":"keyword"
         }
      }
   }
}
```

A continuación, rellene el índice con datos:

```
POST /_bulk
{ "create" : { "_index" : "veggies", "_id" : "7"  } }
{ "name":"kale", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "8" } }
{ "name":"spinach", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "9" } }
{ "name":"arugula", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "10" } }
{ "name":"endive", "color":"green", "classification":"leafy-green" }
{ "create" : { "_index" : "veggies", "_id" : "11" } }
{ "name":"lettuce", "color":"green", "classification":"leafy-green" }
```

Ya puede buscar con un orden. Esta solicitud agrega un orden ascendente por clasificación:

```
GET veggies/_search
{
  "query" : {
    "term": { "color": "green" }
  },
  "sort" : [
      "classification"
  ]
}
```

## Recursos relacionados
<a name="quick-start-resources"></a>

Para obtener más información, consulte los siguientes recursos:
+ [Cómo empezar a usar Amazon OpenSearch Service](gsg.md)
+ [Indexación de datos en Amazon Service OpenSearch](indexing.md)
+ [Búsqueda de datos en Amazon OpenSearch Service](searching.md)