Tutorial: creazione e ricerca di documenti in Amazon OpenSearch Service - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: creazione e ricerca di documenti in Amazon OpenSearch Service

In questo tutorial, imparerai come creare e cercare un documento in Amazon OpenSearch Service. Aggiungi dati a un indice sotto forma di documento JSON. OpenSearch Il servizio crea un indice attorno al primo documento aggiunto.

Questo tutorial spiega come effettuare richieste HTTP per creare documenti, generare automaticamente un ID per un documento ed eseguire ricerche di base e avanzate sui documenti.

Nota

Questo tutorial utilizza un dominio con accesso aperto. Per il massimo livello di sicurezza, ti consigliamo di inserire il dominio all'interno di un cloud privato virtuale (VPC).

Prerequisiti

Di seguito sono elencati i requisiti per questo tutorial:

  • È necessario disporre di un Account AWS.

  • È necessario disporre di un dominio OpenSearch di servizio attivo.

Aggiunta di un documento a un indice

Per aggiungere un documento a un indice, puoi utilizzare qualsiasi strumento HTTP, come Postman, CURL o OpenSearch la console Dashboards. Questi esempi presuppongono che tu stia utilizzando la console per sviluppatori in Dashboards. OpenSearch Se utilizzi uno strumento diverso, modificalo di conseguenza fornendo l'URL completo e le credenziali, se necessario.

Per aggiungere un documento a un indice

  1. Vai all'URL delle OpenSearch dashboard per il tuo dominio. Puoi trovare l'URL nella dashboard del dominio nella console di OpenSearch servizio. L'URL segue il seguente formato:

    domain-endpoint/_dashboards/
  2. Accedi utilizzando il nome utente e la password principali.

  3. Apri il pannello di navigazione a sinistra e scegli Strumenti di sviluppo.

  4. Il verbo HTTP per creare una nuova risorsa è PUT, e si utilizza per creare un nuovo documento e indice. Immettere il seguente comando nella console:

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

    La richiesta PUT crea un indice denominato frutta e aggiunge un singolo documento all'indice con un ID pari a 1. Viene generata la risposta seguente:

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

Creazione di ID generati automaticamente

OpenSearch Il servizio può generare automaticamente un ID per i tuoi documenti. Il comando per generare gli ID utilizza una richiesta POST invece di una richiesta PUT e non richiede alcun ID documento (rispetto alla richiesta precedente).

Inserisci la seguente richiesta nella console degli sviluppatori:

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

Questa richiesta crea un indice denominato verdure e aggiunge il documento all'indice. Viene generata la risposta seguente:

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

Nota che il campo aggiuntivo _id nella risposta, indica che un ID è stato creato automaticamente.

Nota

Non fornisci nulla dopo _doc nell'URL, dove normalmente va l'ID. Poiché stai creando un documento con un ID generato, non ne fornisci ancora uno. È riservato agli aggiornamenti.

Aggiornamento di un documento con un comando POST

Per aggiornare un documento, si utilizza un comando POST HTTP con il numero di ID.

In primo luogo, creare un documento con un ID di 42:

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

Quindi usa quell'ID per aggiornare il documento:

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

Questo comando aggiorna il documento con il nuovo campo classification. Viene generata la risposta seguente:

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

Se si tenta di aggiornare un documento che non esiste, OpenSearch Service crea il documento.

Esecuzione di operazioni in blocco

Puoi utilizzare il l’operazione API POST _bulk per eseguire più azioni su uno o più indici in una richiesta. I comandi di azione in blocco assumono il formato seguente:

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

Ogni azione richiede due righe di JSON. Innanzitutto, fornisci la descrizione o i metadati dell'azione. Nella riga successiva, fornisci i dati. Ogni parte è separata da una nuova riga (\n). Una descrizione dell'azione per un inserto potrebbe essere simile alla seguente:

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

E la riga successiva che contiene i dati potrebbe essere simile alla seguente:

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

Nel loro insieme, i metadati e i dati rappresentano una singola azione in un'operazione di blocco. È possibile eseguire molte operazioni in un'unica richiesta, ad esempio:

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

Si noti che l'ultima azione è delete. Non ci sono dati che seguono l’azione delete.

Ora che i dati sono presenti nel cluster, è possibile cercarli. Ad esempio, potresti voler cercare tutte le verdure con la radice o ottenere il numero di tutte le verdure a foglia verde o trovare il numero di errori registrati all'ora.

Ricerche base

Una ricerca di base è simile a questa:

GET veggies/_search?q=name:l*

La richiesta genera una risposta JSON che contiene il documento sulla lattuga.

Ricerca avanzata

È possibile eseguire ricerche più avanzate fornendo le opzioni di query come JSON nel corpo della richiesta:

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

Questo esempio produce anche una risposta JSON con il documento sulla lattuga.

Ordinamento

È possibile eseguire più query di questo tipo utilizzando l'ordinamento. Innanzitutto, è necessario ricreare l'indice, poiché la mappatura automatica dei campi ha scelto tipi che non possono essere ordinati per impostazione predefinita. Inviare le richieste seguenti per eliminare e ricreare l'indice:

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

Quindi ripopolare l'indice con i dati:

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

Ora puoi cercare con un ordinamento. Questa richiesta aggiunge un ordinamento crescente in base alla classificazione:

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

Risorse correlate

Per ulteriori informazioni, consulta le seguenti risorse :