The Elasticsearch List Indexes Tutorial
Introduction
There are multiple ways to list all of the indexes contained in an Elasticsearch cluster. One common way of doing this is to use cURL and Kibana to issue HTTP requests to communicate with the Elasticsearch cluster to have it return all of the index names and their respective UUIDs. The Elasticsearch list indexes tutorial will explain how to connect to Elasticsearch and list the indexes stored on a cluster. Note that the methods that will be covered in this tutorial can be used on a Windows, Mac or Linux system.
Prerequisites
A stable version of Elasticsearch, that still provides long-term support, or LTS, must be installed on the local system to have Elasticsearch list indexes. Note that Elasticsearch v7.5. is the latest version as of January 2020.
The web-based Kibana user interface must also be installed on the local machine. Alternatively, accessing Elasticsearch in a terminal or command-prompt window using cURL requests will retrieve the cluster’s indexes.
Install cURL for Elasticsearch requests
For users who don’t want to use the Kibana GUI, cURL is required to submit requests to the Elasticsearch cluster. Execute the curl -V
command in a Linux or MacOS terminal to confirm cURL is installed and obtain its version number.
Install cURL on MacOS
Install cURL on a MacOS using the following Homebrew command:
1 | brew install curl |
Ruby can also be used to install cURL with the following command:
1 | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - /dev/null 2- /dev/null |
Install cURL on Ubuntu
The repositories should always be update, using the following command, before any packages are installed on Ubuntu:
1 | sudo apt update && sudo apt-get update |
While most current distros of Linux come with cURL pre-installed, the APT repository can be used to install the cURL library, if needed, with the following command:
1 | sudo apt install curl |
Install Java for Elasticsearch
Newer versions of Elasticsearch are bundled with its own OpenJDK, the open-source alternative to Oracle’s Java Development Kit. However, a customized Java installation may also be used. To confirm Java has been installed, execute the java --version
or update-java-alternatives -l
commands to obtain information about the Java and JDK installations.
Install Java on macOS or Windows
Oracle has an interactive Java installer for both Windows and MacOS, but using it now requires creating an account and signing in before being allowed to execute downloads.
However, OpenJDK does allow useres to download and install binaries for all operating systems without having to create an account.
Install Java on Ubuntu
The following example uses the APT-GET repository to install OpenJDK 11 on a Debian-based flavor of Linux, such as Ubuntu or Linux Mint:
1 | sudo apt-get install openjdk-11-jdk |
The Java runtime environment can be installed on Ubuntu with the following command:
1 | sudo apt-get install default-jre |
Install Elasticsearch
Skip this section if Elasticsearch is already installed. If not, execute the below instructions to install Elasticsearch on the dev computer or server. The interactive MSI installer for Elasticsearch can be used to download the program on Windows machine.
Install Elasticsearch on MacOS
Execute the following brew
command to “tap” the elastic
Homebrew repository for Elasticsearch:
1 | brew tap elastic/tap |
Once the brew tap elastic/tap
command has been executed, use the following brew install
command to install Elasticsearch on Mac:
1 | brew install elastic/tap/elasticsearch-full |
Once that function has completed, execute the following elasticsearch
command to start the cluster as a foreground service in a terminal window:
1 | elasticsearch |
The result should resemble the following screenshot:
Elasticsearch connection
With Elasticsearch installed and the cluster working properly, execute the curl localhost:9200
command in a terminal or command-prompt window to obtain a JSON response that should resemble following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { "name" : "Macs-MacBook-Pro.local", "cluster_name" : "elasticsearch_macuser", "cluster_uuid" : "lbja__eEQNSUSRA1wJ-CaA", "version" : { "number" : "7.5.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "8bec50e1e0ad29dad5653712cf3bb580cd1afcdf", "build_date" : "2020-01-15T12:11:52.313576Z", "build_snapshot" : false, "lucene_version" : "8.3.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } |
Note that the above JSON response contains vital information about the Elasticsearch installation and cluster.
Use Elasticsearch to create an index
cURL can also be used to make an HTTP PUT
request to create a new index. The following request instructs the cluster to create the new_index
:
1 | curl -X PUT "localhost:9200/new_index?pretty" |
NOTE: The ?pretty=true
or ?pretty
option will have Elasticsearch format the JSON response into a more readable form.
The results should resemble the following image:
List indexes in Elasticsearch
A HTTP request, that points to /_cat/indices/
in the request header’s URL, is needed to obtain the Elasticsearch cluster’s indices.
Use cURL to list indices for Elasticsearch
Execute the following cURL request to return a list of all of the Elasticsearch indexes:
1 | curl localhost:9200/_cat/indices |
Alternatively, use the following -v
(verbose) option to obtain a more detailed response that will also contain the names of the indexes:
1 | curl -v "localhost:9200/_cat/indices" |
It should be noted that the above requests should return an HTTP response of 200 OK
along with a list of the name, health status and UUID of each index.
NOTE: The request should also return all of the cluster’s built-in default indexes, such as .kibana
. The use of the -X
option is often unnecessary in newer versions of cURL.
Use Kibana to list indices for Elasticsearch
If there is a web-based Kibana user interface installed and running, the same results can be obtained by navigating to http://localhost:5601/
in a browser tab and executing the following request in the “Dev Tools” console:
1 | GET _cat/indices |
As with the terminal-based cURL requests, Kibana should return the status, name and UUID for each index.
The results should look like the flowing image:
Elasticsearch get index example
To confirm a specific index exists, just pass the index name to the cluster’s domain and port URL in the request header as shown in the following example:
1 | curl -iv "localhost:9200/new_index?pretty" |
The command should return a combination of an HTTP and JSON response that resembles the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | * Trying ::1... * TCP_NODELAY set * Connected to localhost (::1) port 9200 (#0) > GET /new_index?pretty HTTP/1.1 > Host: localhost:9200 > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK HTTP/1.1 200 OK < content-type: application/json; charset=UTF-8 content-type: application/json; charset=UTF-8 < content-length: 379 content-length: 379 < { "new_index" : { "aliases" : { }, "mappings" : { }, "settings" : { "index" : { "creation_date" : "1580134445421", "number_of_shards" : "1", "number_of_replicas" : "1", "uuid" : "Jju1fRHARxKv77hA8l487Q", "version" : { "created" : "7050299" }, "provided_name" : "new_index" } } } } * Connection #0 to host localhost left intact * Closing connection 0 |
NOTE: The request URL must be enclosed in quotation marks whenever using options like ?pretty
. However, the same GET
request can be executed in Kibana using GET new_index
. Here it is not necessary to use the ?pretty
option in the Kibana request as the UI automatically formats the JSON responses.
Conclusion
This Elasticsearch list indexes tutorial explained how to connect to Elasticsearch and list the indexes stored on a cluster. The tutorial specifically covered how to install cURL for Elasticsearch requests on MacOS, Ubuntu and Windows, how to install Java for Elasticsearch on MacOS, Windows and Ubuntu and how to install Elasticsearch and make an Elasticsearch connection with the local system. The article
also explained how to use Elasticsearch to create an index, list the indexes in Elasticsearch with cURL and provided an Elasticsearch get-index example. Remember that the request URL must be enclosed in quotation marks whenever options like ?pretty
are used. However, the same GET
request can be executed in Kibana using GET new_index
without using the ?pretty
option as the UI automatically formats the JSON responses in Kibana.
Pilot the ObjectRocket Platform Free!
Try Fully-Managed CockroachDB, Elasticsearch, MongoDB, PostgreSQL (Beta) or Redis.
Get Started