All skills
Skillintermediate
Index Management API Reference
```bash es "my-new-index" -XPUT -d '{ "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "properties": { "timestamp": {"type": "date"}, "message": {"type": "text"}, "level": {"type": "keyword"}, "duration_ms": {"type": "float"} } } }' ```
Claude Code Knowledge Pack7/10/2026
Overview
Index Management API Reference
Create Index
es "my-new-index" -XPUT -d '{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"timestamp": {"type": "date"},
"message": {"type": "text"},
"level": {"type": "keyword"},
"duration_ms": {"type": "float"}
}
}
}'
Delete Index
es "my-old-index" -XDELETE
With wildcard (dangerous — requires action.destructive_requires_name: false):
es "temp-*" -XDELETE
Index Settings
Get settings:
es "my-index/_settings" | jq '.[]|.settings.index'
Update settings (dynamic only):
es "my-index/_settings" -XPUT -d '{
"index": {
"number_of_replicas": 2,
"refresh_interval": "30s"
}
}'
Common dynamic settings: number_of_replicas, refresh_interval, max_result_window, routing.allocation.require.*
List Indices
# Human-readable, sorted by size
es "_cat/indices?v&s=store.size:desc&h=index,health,status,docs.count,store.size"
# JSON format
es "_cat/indices?format=json&s=store.size:desc" | jq '.[] | {index: .index, docs: .["docs.count"], size: .["store.size"]}'
# Filter by pattern
es "_cat/indices/logs-*?v&s=store.size:desc"
Open / Close
Closed indices consume no resources but can't be searched.
es "my-index/_close" -XPOST
es "my-index/_open" -XPOST
Reindex
Copy data between indices (useful for mapping changes):
es "_reindex" -XPOST -d '{
"source": {"index": "old-index"},
"dest": {"index": "new-index"}
}'
With query filter:
es "_reindex" -XPOST -d '{
"source": {
"index": "logs-*",
"query": {"range": {"@timestamp": {"gte": "2026-01-01"}}}
},
"dest": {"index": "logs-2026"}
}'
Remote reindex (cross-cluster):
es "_reindex" -XPOST -d '{
"source": {
"remote": {"host": "https://other-cluster:9200"},
"index": "source-index"
},
"dest": {"index": "dest-index"}
}'
Aliases
# List aliases
es "_cat/aliases?v"
# Create alias
es "_aliases" -XPOST -d '{
"actions": [
{"add": {"index": "logs-2026.02", "alias": "logs-current"}}
]
}'
# Swap alias atomically
es "_aliases" -XPOST -d '{
"actions": [
{"remove": {"index": "logs-2026.01", "alias": "logs-current"}},
{"add": {"index": "logs-2026.02", "alias": "logs-current"}}
]
}'
Index Lifecycle Management (ILM)
# Get ILM policy
es "_ilm/policy/my-policy"
# Get ILM status for index
es "my-index/_ilm/explain"
# Retry failed ILM step
es "my-index/_ilm/retry" -XPOST
Shrink / Split
# Shrink (reduce shard count — index must be read-only first)
es "my-index/_settings" -XPUT -d '{"index.blocks.write": true}'
es "my-index/_shrink/my-index-shrunk" -XPOST -d '{"settings": {"index.number_of_shards": 1}}'
# Split (increase shard count)
es "my-index/_split/my-index-split" -XPOST -d '{"settings": {"index.number_of_shards": 4}}'
Rollover
es "logs-current/_rollover" -XPOST -d '{
"conditions": {
"max_age": "7d",
"max_size": "50gb",
"max_docs": 10000000
}
}'
Index Stats
# All stats
es "my-index/_stats" | jq '.indices["my-index"].total'
# Specific metrics
es "my-index/_stats/docs,store,indexing,search"