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
Per aggiungere un documento a un indice
-
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/ -
Accedi utilizzando il nome utente e la password principali.
-
Apri il pannello di navigazione a sinistra e scegli Strumenti di sviluppo.
-
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
.
Ricerca di documenti
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 :