elasticsearch-reindex
Guide Elasticsearch reindex for performance: local and remote, slicing, throttling, task API.
Skill by elasticOfficial
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/elastic-elasticsearch-reindex
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/elasticsearch-reindex
What's inside
- Skill name
elasticsearch-reindex- Description
- Guide Elasticsearch reindex for performance: local and remote, slicing, throttling, task API. Use when copying or migrating indices, changing mappings, or transforming during reindex.
- License
- Apache-2.0
- Compatibility
- Elasticsearch 8.x or 9.x, self-managed, Elastic Cloud Hosted, or Elastic Cloud Serverless; local reindex works on all deployment types, while remote reindex requires host allowlisting on self-managed / Elastic Cloud Hosted (Serverless supports Elastic Cloud Hosted remotes only, Tech Preview). Requires the `elastic` CLI ≥ 0.2 with `stack es` support.
- Metadata
- author: elastic · version: 0.2.0 · universal: true
- Instructions
- 195 lines in SKILL.md · view on GitHub
Files (5)
- SKILL.md
- api-reference.md · references/
- patterns.md · references/
- troubleshooting.md · references/
- tuning.md · references/
SKILL.md (first lines)
# Elasticsearch Reindex
Copy documents from source indices or data streams to a destination using `POST /_reindex`. An expert reindex workflow
prepares the destination explicitly, chooses local versus remote execution, filters at the source when only a subset is
needed, runs long copies asynchronously, tracks the task to completion, and verifies the destination document count
before reporting results.
<!-- begin-partial: preamble -->
## Environment Configuration
This skill executes Elasticsearch operations through the `elastic` CLI. If the
[`elastic` CLI](https://github.com/elastic/cli#configuration) is not installed, tell the user what it is needed for. Do
not guess credentials, call the HTTP API directly, or attempt other workarounds.
This skill references operations in HTTP-shorthand form (e.g., `GET /`, `GET /_cat/indices`, `GET /{index}/_mapping`,
`GET /{index}/_settings/index.mode`, `POST /_query`). The [Operations](#operations) table at the end of this document
maps each shorthand to the equivalent `elastic` CLI command — always use the CLI rather than calling the HTTP API
directly.
<!-- end-partial: preamble -->
## Process
1. **Confirm connectivity and deployment type.** Call `GET /`. Read `build_flavor` and `version.number` to know whether
shard, replica, and cluster-settings APIs are available (Serverless manages shards/replicas internally and blocks
most `_cluster/*` APIs). The decision: continue only when the cluster is reachable. If the call fails, stop — do not
guess endpoints or credentials.
2. **Decide local versus remote reindex.** Compare where the source and destination live.
- **Same cluster** — use local reindex: `source.index` and `dest.index` only. Do **not** add `source.remote` when
both indices are on the cluster you are connected to.
- **Different cluster** — use reindex from remote: add `source.remote` with the remote cluster URL and credentials.
Remote reindex does not support slicing; compensate with query-based partitioning (date ranges, term filters)
across parallel requests. Confirm the remote host is allowlisted on Self-Managed / ECH (`reindex.remote.whitelist`
in cluster config); Serverless manages allowlisting internally (ECH remotes only, Tech Preview).
Data needed: source index name(s), destination index name, and whether they share a cluster.
3. **Inspect the source — never guess field names or counts.** Call `GET /{source}/_mapping` to ground field names and
types. Call `GET /{source}/_count` (or `GET /_cat/count/{source}?h=count` on Self-Managed / ECH) to learn how many
documents exist.
The decision: **full copy** versus **filtered subset**.
- Full copy — omit `source.query` (match-all behavior).
- Filtered subset — add `source.query` with Query DSL. For time ranges, use a `range` filter on the timestamp field
(commonly `@timestamp`), e.g. `"gte": "2025-01-01", "lt": "2025-02-01"` for January 2025. Do **not** run a
full-index copy when the user asked for a date range or other filter.
Data needed: the user's filter criteria and the mapping-confirmed field names.
4. **Prepare the destination index before copying.** `_reindex` does **not** copy mappings, shard counts, or analyzers.
Create the destination with explicit settings and mappings derived from the source mapping via `PUT /{dest}`.
- On Self-Managed / ECH: set `number_of_replicas: 0` and `refresh_interval: "-1"` on the destination during the copy
for write throughput; restore production values afterward with `PUT /{dest}/_settings`.
- On Serverless: omit `number_of_shards` and `number_of_replicas` (managed by Elastic); you may set
`refresh_interval: "-1"` during the copy.
- For **data stream** destinations: ensure an index template with `data_stream: {}` exists, create the data stream,
and set `dest.op_type` to `"create"` (append-only).
The decision: create/prepare the target rather than relying on auto-creation with dynamic mapping. Wrong or missing
mappings cause partial failures or silent type coercion.
Data needed: destination name, corrected or compatible mappings, and deployment-specific settings constraints.
5. **Build and submit the reindex request.** Call `POST /_reindex?wait_for_completion=false` for any copy that may take
more than a few seconds or when the user says the index is large — the response returns a **task id** immediately
instead of blocking.
Request body essentials:
- `source.index` — source index or data stream (correct name, not reversed with `dest.index`).
- `dest.index` — prepared destination from step 4.
- `source.query` — include only when step 3 chose a filtered subset.
- `conflicts: "proceed"` — when retrying a partially complete reindex.
- Optional tuning: `source.size` (batch size), `requests_per_second` (throttle), `slices=auto` on local reindex only
(parallelize per primary shard — never for remote), `scroll` (increase keep-alive on slow clusters), `max_docs`
(test runs), `script` (transform), `dest.pipeline` (ingest enrichment).
Example filtered subset (January 2025 only):
```json
{
"source": {
"index": "eval-reindex-src",
"query": {
"range": {
"@timestamp": { "gte": "2025-01-01", "lt": "2025-02-01" }
}
}
},
"dest": { "index": "eval-reindex-jan" }
}
```
Do **not** reach for `_split`, `_shrink`, or snapshot/restore when the task is a filtered subset copy or a straight
document migration — those APIs solve different problems.
6. **Track the task to completion.** Store the task id from the reindex response. Poll `GET /_tasks/{task_id}` until
`completed` is `true`. Read `status.total`, `status.created`, and `response.failures`. On Self-Managed / ECH you may
also list active reindex tasks with `GET /_tasks?actions=*reindex&detailed`; on Serverless, query by task id only
(list/cancel are not available). Adjust throttling mid-flight with
`POST /_reindex/{task_id}/_rethrottle?requests_per_second=N` without canceling.
7. **Verify and report the destination count.** Call `GET /{dest}/_count` (works on all deployment types). On
Self-Managed / ECH you may also use `GET /_cat/count/{dest}?h=count`. Compare source filter expectations to the
destination count. Report the **exact** count from the destination — do not estimate or guess.
After a successful full copy, restore production settings on the destination with `PUT /{dest}/_settings` (replicas
and refresh interval on Self-Managed / ECH; refresh interval only on Serverless).
## Deployment constraints
| Capability | Self-Managed / ECH | Serverless |
| --------------------------- | ------------------ | ----------------------------------------- |
| Local reindex | Full support | Full support |
| Reindex from remote | Full support | Tech Preview — ECH remotes only |
| `number_of_shards/replicas` | User-configurable | Managed — omit on index creation |
| `slices=auto` (local only) | Supported | Supported for local reindex |
| `GET /_cat/count/{index}` | Supported | Not available — use `GET /{index}/_count` |From elastic/agent-skills, Apache-2.0.
More from elastic/agent-skills
- 0.762score
elasticsearch-anomaly-detection
elasticOfficial
Create and manage Elastic ML anomaly detection jobs via the API.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-anomaly-detection-explainer
elasticOfficial
Explain Elasticsearch ML anomaly detection scores, model behavior, and result interpretation.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-esql
elasticOfficial
Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or…
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-index-design
elasticOfficial
Design and review Elasticsearch index mappings for stated access patterns: correct field types, text+keyword multi-fields, doc_values tuning…
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-ingest
elasticOfficial
Load CSV and JSON files into Elasticsearch indices using the bulk API and explicit mappings when field types matter.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-onboarding
elasticOfficial
Help developers new to Elasticsearch get from zero to a working search experience.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-query-optimization
elasticOfficial
Diagnose slow Elasticsearch Query DSL searches and propose measured fixes.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-search-relevance
elasticOfficial
Improve Elasticsearch search relevance for content and catalog indices: pin or promote results with query rules (correct rule type, criteria, and rule-query…
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
kibana-agent-builder
elasticOfficial
Create and manage Kibana Agent Builder agents and custom tools.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
kibana-alerting-rules
elasticOfficial
Create and manage Kibana alerting rules.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
kibana-anomaly-detection
elasticOfficial
Elastic ML anomaly detection — investigation/RCA, score explanation, job lifecycle troubleshooting, and job operations.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
kibana-dashboards
elasticOfficial
Create and manage Kibana Dashboards and Lens visualizations.
SkillBFreshness: B★ 600Claude Code +9
Signals
- Stars
- 600
- Forks
- 55
- Open issues
- 4
- Last commit (this folder)
- Sep 4, 2026 (1 month ago)
- Last release
- Sep 4, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 0.2.0
- License
- Apache-2.0
- Repository
- github.com/elastic/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from elastic
- 0.762score
elasticsearch-anomaly-detection
elasticOfficial
Create and manage Elastic ML anomaly detection jobs via the API.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-anomaly-detection-explainer
elasticOfficial
Explain Elasticsearch ML anomaly detection scores, model behavior, and result interpretation.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-esql
elasticOfficial
Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or…
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-index-design
elasticOfficial
Design and review Elasticsearch index mappings for stated access patterns: correct field types, text+keyword multi-fields, doc_values tuning…
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-ingest
elasticOfficial
Load CSV and JSON files into Elasticsearch indices using the bulk API and explicit mappings when field types matter.
SkillBFreshness: B★ 600Claude Code +9 - 0.762score
elasticsearch-onboarding
elasticOfficial
Help developers new to Elasticsearch get from zero to a working search experience.
SkillBFreshness: B★ 600Claude Code +9
Cite this page
elasticsearch-reindex skill. Agent Mart. https://agentmart.dev/skills/elastic-elasticsearch-reindex (last updated 2026-10-24)