Elasticsearch Deleting Elasticsearch Indices Using cURL

By Opster Team

Updated: Nov 14, 2023

| 3 min read

Introduction

In this article, we will discuss how to delete Elasticsearch indices using cURL, a command-line tool for transferring data with URLs. Deleting indices is a crucial task in managing Elasticsearch clusters, as it helps in freeing up resources, optimizing cluster performance, and maintaining data integrity. If you want to learn about deleting index – how to solve related issues, check out this guide. We will cover the following topics:

  1. Prerequisites for using cURL with Elasticsearch
  2. Deleting a single index using cURL
  3. Deleting multiple indices using cURL
  4. Deleting indices based on a pattern using cURL
  5. Deleting indices based on conditions using cURL

1. Prerequisites for using cURL with Elasticsearch

Before we proceed with the deletion process, ensure that you have the following prerequisites:

  • Elasticsearch cluster up and running
  • cURL installed on your system

If you don’t have cURL installed, you can download it from the official website: https://curl.se/download.html

2. Deleting a single index using cURL

To delete a single index, use the following cURL command:

curl -X DELETE "http://localhost:9200/index_name"

Replace `index_name` with the name of the index you want to delete. For example, to delete an index named `my_index`, the command would be:

curl -X DELETE "http://localhost:9200/my_index"

If the deletion is successful, you will receive a response similar to the following:

{"acknowledged":true}

3. Deleting multiple indices using cURL

To delete multiple indices at once, separate the index names with a comma. For example, to delete indices `index_1` and `index_2`, use the following command:

curl -X DELETE "http://localhost:9200/index_1,index_2"

If the deletion is successful, you will receive a response similar to the following:

{"acknowledged":true}

4. Deleting indices based on a pattern using cURL

Elasticsearch allows you to delete indices based on a pattern. Note that in order to use this method, you first need to make sure that the `action.destructive_requires_name` setting is set to `false` as it is `true` by default to prevent accidental index deletion. There are two ways to set this setting. One is by adding it to your `elasticsearch.yml` configuration file and restarting your nodes. The second is by modifying your cluster settings with the following command:

curl -X PUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{
  "persistent": {
    "action.destructive_requires_name": false
  }
}

This method is useful when you have a large number of indices with a common naming convention. To delete indices based on a pattern, use the following command:

curl -X DELETE "http://localhost:9200/index_prefix*"

Replace `index_prefix` with the common prefix of the indices you want to delete. For example, to delete all indices with the prefix `logstash-`, the command would be:

curl -X DELETE "http://localhost:9200/logstash-*"

If the deletion is successful, you will receive a response similar to the following:

{"acknowledged":true}

5. Deleting indices based on conditions using cURL

In some cases, you may want to delete indices based on certain conditions, such as the age of the index or the amount of data stored in it. To achieve this, you can use the Elasticsearch Curator tool, which is a powerful command-line tool for managing indices.

First, install Elasticsearch Curator using the official installation guide: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/installation.html

Once installed, create a configuration file named `delete_indices.yml` with the following content:

yaml
actions:
  1:
    action: delete_indices
    description: >-
      Delete indices older than 30 days (based on index creation_date)
    options:
      ignore_empty_list: True
      disable_action: False
    filters:
    - filtertype: age
      source: creation_date
      direction: older
      unit: days
      unit_count: 30

This configuration file will delete indices older than 30 days based on their creation date. You can modify the `unit_count` value to set a different age threshold.

To execute the Curator action with the configuration file, run the following command:

curator --config /path/to/curator.yml /path/to/delete_indices.yml

Replace `/path/to/curator.yml` with the path to your Curator configuration file and `/path/to/delete_indices.yml` with the path to the `delete_indices.yml` file created earlier.

Conclusion 

In conclusion, cURL is a versatile tool for managing Elasticsearch indices, including deleting them based on various criteria. By following the steps outlined in this article, you can efficiently manage your Elasticsearch cluster and optimize its performance.

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?