Una delle caratteristiche di progettazione uniche di Elasticsearch è che, a differenza della maggior parte dei sistemi o database tradizionali, tutte le attività come la connessione e la manipolazione di Elasticsearch vengono eseguite utilizzando una REST API
, il che significa che quasi ogni query o comando eseguito sul tuo nodo Elasticsearch è una semplice richiesta HTTP a un URL particolare.
A seconda del HTTP verb
inviato e l'URL a cui è inviato, Elasticsearch può eseguire un'ampia varietà di azioni sul nodo o persino sul cluster.
La struttura dell'URL dell'API REST di Elasticsearch
Al livello più elementare, per eseguire un comando in Elasticsearch, dovrai inviare un verbo HTTP all'URL del tuo nodo Elasticsearch. Per lo sviluppo, in genere si tratta di localhost:9200
.
Nella maggior parte casi, il metodo più semplice per inviare una richiesta all'API REST di Elasticsearch è tramite l'utile strumento a riga di comando, cURL
, che è un semplice strumento utilizzato per trasferire quasi tutti i tipi di dati Internet.
Ad esempio, per elencare tutti gli indices
, puoi eseguire il seguente curl
comando dal prompt della shell del tuo server di sviluppo (come indicato nella documentazione ufficiale:
$ curl 'localhost:9200/_cat/indices?v'
health index pri rep docs.count docs.deleted bookstore.size pri.bookstore.size
Qui accediamo all'cat API
(indicato dal _
iniziale underscore) e visualizzando gli indices
, che mostra una sezione trasversale di ciascun indice nel cluster.
Indici, tipi, documenti e proprietà
Con un esempio in atto, possiamo esplorare più in dettaglio la struttura specifica delle API REST di Elasticsearch, che molto spesso saranno composte da tre componenti strutturate, l'index
, il type
e il document
:
localhost:9200/index/type/document
L'index
è la struttura madre ed è più semplicemente pensata come un database
che ospita molti types
. E index
può rappresentare qualsiasi concetto, ma spesso rappresenterà un intero sistema di componenti come un shop
o una bookstore
.
Types
sono contenuti in un index
e sono simili alle tables
del database , con ogni type
che rappresentano una raccolta di oggetti simili (come shirt
o book
).
Infine, il document
è una singola istanza o rappresentazione di un oggetto del type
genitore . Pertanto, il libro "Lo Hobbit" potrebbe esistere come un libro type
nell'index
denominata libreria .
Eliminazione dei dati da Elasticsearch
Con la sintassi dell'API REST di base fuori mano, possiamo esplorare come eseguire azioni specifiche come l'eliminazione dei dati.
Elimina un singolo documento
Prendendo la nostra sintassi di base come visto sopra, dobbiamo usare curl
e invia il DELETE
Verbo HTTP, utilizzando il -XDELETE
opzione:
$ curl -XDELETE 'localhost:9200/index/type/document'
Ad esempio, per eliminare il nostro libro document
di cui sopra , potremmo usare il seguente comando:
$ curl -XDELETE 'localhost:9200/bookstore/book/1'
Questo cancellerà il document
con un ID
di 1
dal book
type
che è all'interno del bookstore
index
.
Elimina un tipo
Come puoi immaginare, con la sintassi solo leggermente ampliata, siamo in grado di rimuovere un intero type
. Qui stiamo eliminando il book
type
:
$ curl -XDELETE 'localhost:9200/bookstore/book'
Elimina un indice
Infine, se desideriamo eliminare un intero index
, questo può essere fatto usando la stessa sintassi di prima:
$ curl -XDELETE 'localhost:9200/bookstore'