Popular APIs

This page contains sample requests for popular Elasticsearch APIs.


Table of contents

  1. Create index with non-default settings
  2. Index a document with a random ID
  3. Index a document with a specific ID
  4. Index several documents at once
  5. List all indices
  6. Open or close all indices that match a pattern
  7. Delete all indices that match a pattern
  8. Create an index alias
  9. List all aliases
  10. Search an index or all indices that match a pattern
  11. Get cluster settings, including defaults
  12. Change disk watermarks (or other cluster settings)
  13. Get cluster health
  14. List nodes in the cluster
  15. Get node statistics
  16. Get snapshots in a repository
  17. Take a snapshot
  18. Restore a snapshot

Create index with non-default settings

PUT my-logs
{
  "settings": {
    "number_of_shards": 4,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "year": {
        "type": "integer"
      }
    }
  }
}

Index a document with a random ID

POST my-logs/_doc
{
  "title": "Your Name",
  "year": "2016"
}

Index a document with a specific ID

PUT my-logs/_doc/1
{
  "title": "Weathering with You",
  "year": "2019"
}

Index several documents at once

The blank line at the end of the request body is required. If you omit the _id field, Elasticsearch generates a random ID.

POST _bulk
{ "index": { "_index": "my-logs", "_id": "2" } }
{ "title": "The Garden of Words", "year": 2013 }
{ "index" : { "_index": "my-logs", "_id" : "3" } }
{ "title": "5 Centimeters Per Second", "year": 2007 }

List all indices

GET _cat/indices?v

Open or close all indices that match a pattern

POST my-logs*/_open
POST my-logs*/_close

Delete all indices that match a pattern

DELETE my-logs*

Create an index alias

This request creates the alias my-logs-today for the index my-logs-2019-11-13.

PUT my-logs-2019-11-13/_alias/my-logs-today

List all aliases

GET _cat/aliases?v

Search an index or all indices that match a pattern

GET my-logs/_search?q=test
GET my-logs*/_search?q=test

Get cluster settings, including defaults

GET _cluster/settings?include_defaults=true

Change disk watermarks (or other cluster settings)

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "80%",
    "cluster.routing.allocation.disk.watermark.high": "85%"
  }
}

Get cluster health

GET _cluster/health

List nodes in the cluster

GET _cat/nodes?v

Get node statistics

GET _nodes/stats

Get snapshots in a repository

GET _snapshot/my-repository/_all

Take a snapshot

PUT _snapshot/my-repository/my-snapshot

Restore a snapshot

POST _snapshot/my-repository/my-snapshot/_restore
{
  "indices": "-.opendistro_security",
  "include_global_state": false
}