One of the unique design features of Elasticsearch is that, unlike most traditional systems or databases, all tasks such as connecting to and manipulating Elasticsearch are performed using a
REST API, meaning that nearly every query or command executed on your Elasticsearch node is a simple HTTP request to a particular URL.
Depending on the
HTTP verb sent and the URL that verb it is sent to, Elasticsearch can perform a huge variety of actions on the node or even the cluster.
The Elasticsearch REST API URL Structure
At the most basic level, to execute a command in Elasticsearch, you’ll need to send an HTTP verb to the URL of your Elasticsearch node. For development, typically this is
In most cases, the simplest method for sending a request to the REST API of Elasticsearch is through the useful command-line tool,
cURL, which is a simple tool used to transfer nearly any kind of Internet data.
For example, to list all
indices, you may execute the following
curl command from the shell prompt of your development server (as indicated in the official documentation):
$ curl 'localhost:9200/_cat/indices?v' health index pri rep docs.count docs.deleted bookstore.size pri.bookstore.size
Here we’re accessing the
cat API (indicated by the leading
_ underscore) and viewing the
indices, which shows a cross-section of each index in the cluster.
Indices, Types, Documents, and Properties
With an example in place, we can explore in more detail the specific structure of Elasticsearch REST APIs, which are most often going to consist of three structured components, the
type, and the
index is the parent structure and is most simply thought of as a
database that houses many
index can represent any concept, but often will represent a whole system of components such as a
shop or a
Types are contained in an
index and are similar to database
tables, with each
type representing a collection of similar objects (like
document is a single instance or representation of an object of the parent
type. Thus, the book “The Hobbit” may exist as a book
type in the
index named bookstore.
Deleting Data from Elasticsearch
With the basic REST API syntax out of the way, we can explore how to perform specific actions like deleting data.
Delete a Single Document
Taking our basic syntax as seen above, we need to use
curl and send the
DELETE HTTP verb, using the
$ curl -XDELETE 'localhost:9200/index/type/document'
For example, to delete our aforementioned book
document, we might use the following command:
$ curl -XDELETE 'localhost:9200/bookstore/book/1'
This will delete the
document with an
1 from the
type that is within the
Delete a Type
As you might guess, with the syntax only broadening slightly, we’re able to remove an entire
type. Here we’re deleting the
$ curl -XDELETE 'localhost:9200/bookstore/book'
Delete an Index
Lastly, if we wish to delete an entire
index, this can be done using the same syntax as before:
$ curl -XDELETE 'localhost:9200/bookstore'