Tutorial: Creación y búsqueda de documentos en Amazon OpenSearch Service - OpenSearch Servicio Amazon

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

En este tutorial, aprenderá a crear y buscar un documento en Amazon OpenSearch Service. Agregue datos a un índice en forma de documento JSON. OpenSearch Service crea un índice alrededor del primer documento que 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

Este tutorial tiene los requisitos previos siguientes:

  • Debe tener una Cuenta de AWS.

  • Debe tener un dominio de OpenSearch Service activo.

Adición de un documento a un índice

Para agregar un documento a un índice, puede utilizar cualquier herramienta HTTP, como Postman, cURL o la consola de paneles de OpenSearch. En estos ejemplos, se supone que está utilizando la consola para desarrolladores en los paneles de 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. Desplácese hasta la URL de OpenSearch Dashboards para su dominio. Puede encontrar la URL en el panel del dominio en la consola de OpenSearch Service. La URL tiene este formato:

    domain-endpoint/_dashboards/
  2. Inicie sesión con su nombre de usuario y contraseña principales.

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

  4. 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 }

Creación de ID de generación automática

OpenSearch Service puede generar automáticamente un ID para sus documentos. El comando para generar ID utiliza una solicitud POST en lugar de una solicitud PUT y no requiere ningún ID 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

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 crea el documento.

Ejecución de acciones por lotes

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 (\n). 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.

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

Para obtener más información, consulte los siguientes recursos: