Tutoriel : Création et recherche de documents dans Amazon OpenSearch Service - Amazon OpenSearch Service

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.

Tutoriel : Création et recherche de documents dans Amazon OpenSearch Service

Dans ce didacticiel, vous apprendrez à créer et à rechercher un document dans Amazon OpenSearch Service. Vous ajoutez des données à un index sous la forme d'un document JSON. OpenSearch Le service crée un index autour du premier document que vous ajoutez.

Ce didacticiel explique comment effectuer des requêtes HTTP pour créer des documents, générer automatiquement un ID pour un document, et effectuer des recherches de base et avancées sur vos documents.

Note

Ce didacticiel utilise un domaine en accès libre. Pour le plus haut niveau de sécurité, nous vous recommandons de placer votre domaine dans un cloud privé virtuel (VPC).

Prérequis

Ce didacticiel nécessite la configuration suivante :

  • Vous devez avoir un Compte AWS.

  • Vous devez disposer d'un domaine OpenSearch de service actif.

Ajout d'un document à un index

Pour ajouter un document à un index, vous pouvez utiliser n'importe quel outil HTTP, tel que Postman, cURL ou OpenSearch la console Dashboards. Ces exemples supposent que vous utilisez la console de développement dans les OpenSearch tableaux de bord. Si vous utilisez un autre outil, adaptez-le en conséquence en fournissant l'URL complète et les informations d'identification, si nécessaire.

Pour ajouter un document à un index

  1. Accédez à l'URL OpenSearch des tableaux de bord de votre domaine. Vous pouvez trouver l'URL sur le tableau de bord du domaine dans la console OpenSearch de service. Le format de l'URL est le suivant :

    domain-endpoint/_dashboards/
  2. Connectez-vous à l'aide de votre nom d'utilisateur et de votre mot de passe principaux.

  3. Ouvrez le panneau de navigation de gauche et choisissez Dev Tools (Outils de développement).

  4. Le verbe HTTP permettant de créer une nouvelle ressource est PUT. C'est ce que vous utilisez pour créer un nouveau document et un nouvel index. Saisissez la commande suivante dans la console :

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

    La requête PUT crée un index nommé fruit et ajoute un seul document à l'index avec un ID de 1. Elle produit la réponse suivante :

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

Création d'ID générés automatiquement

OpenSearch Le service peut générer automatiquement un identifiant pour vos documents. La commande pour générer des ID utilise une requête POST au lieu d'une requête PUT, et elle ne requiert aucun ID de document (par rapport à la requête précédente).

Saisissez la requête suivante dans la console du développeur :

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

Cette requête crée un index nommé veggies et ajoute le document à l'index. Elle produit la réponse suivante :

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

Notez le champ supplémentaire _id dans la réponse, qui indique qu'un ID a été automatiquement créé.

Note

Vous ne fournissez rien après _doc dans l'URL, où se trouve normalement l'ID. Comme vous créez un document avec un ID généré, vous n'en fournissez pas encore. C'est réservé aux mises à jour.

Mise à jour d'un document avec une commande POST

Pour mettre à jour un document, vous utilisez une commande HTTP POST avec le numéro d'ID.

Tout d'abord, créez un document avec un ID de 42 :

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

Utilisez ensuite cet ID pour mettre à jour le document :

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

Cette commande met à jour le document avec le nouveau champ classification. Elle produit la réponse suivante :

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

Si vous essayez de mettre à jour un document qui n'existe pas, OpenSearch Service crée le document.

Exécution d'actions en bloc

Vous pouvez utiliser l'opération API POST _bulk pour effectuer plusieurs actions sur un ou plusieurs index en une seule requête. Les commandes d'actions en bloc ont le format suivant :

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

Chaque action nécessite deux lignes de JSON. D'abord, vous fournissez la description de l'action ou les métadonnées. Sur la ligne suivante, vous fournissez les données. Chaque partie est séparée par un caractère de saut de ligne (\n). Une description d'action pour un insert pourrait ressembler à ceci :

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

Et la ligne suivante contenant les données pourrait ressembler à ceci :

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

Prises ensemble, les métadonnées et les données représentent une seule action dans une opération en bloc. Vous pouvez effectuer plusieurs opérations en une seule requête, comme ceci :

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" } }

Notez que la dernière action est un delete. Il n'y a pas de données après l'action delete.

Maintenant que les données existent dans votre cluster, vous pouvez les rechercher. Par exemple, vous pouvez rechercher tous les légumes-racines, obtenir un décompte de tous les légumes-feuilles ou rechercher le nombre d'erreurs journalisées par heure.

Recherches de base

Une recherche de base ressemble à ceci :

GET veggies/_search?q=name:l*

La requête produit une réponse JSON qui contient le document de laitue.

Recherches avancées

Vous pouvez effectuer des recherches plus avancées en fournissant les options de la requête sous forme de JSON dans le corps de la requête :

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

Cet exemple produit également une réponse JSON contenant le document de laitue.

Tri

Vous pouvez effectuer d'autres recherches de ce type en utilisant le tri. Tout d'abord, vous devez recréer l'index, car le mappage automatique des champs a choisi des types qui ne peuvent pas être triés par défaut. Envoyez les requêtes suivantes pour supprimer et recréer l'index :

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

Puis repeuplez l'index avec des données :

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" }

Vous pouvez maintenant effectuer une recherche avec un tri. Cette requête ajoute un tri ascendant selon la classification :

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

Ressources connexes

Pour plus d'informations, consultez les ressources suivantes :