"Guide Elasticsearch Python bulk indexing, streaming, scanning,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill helpers-ingest --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Helpers Ingest?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-helpers-ingest)More formats (shields.io, HTML) on the badges page.
---
name: helpers-ingest
description: "Guide Elasticsearch Python bulk indexing, streaming, scanning,
reindexing, parallel ingestion, async helpers, action validation, and
partial-failure recovery."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# Helpers and ingestion
Use this route for bulk indexing, updates/deletes, streaming ingestion, scan,
reindex, parallel work, or helper-specific error handling. Start with a
configured `Elasticsearch` or `AsyncElasticsearch` from
[client-operations](../client-operations/SKILL.md).
## Choose a helper
- `helpers.bulk(client, actions)`: consume an iterable and return a count plus
either an error list or (with `stats_only=True`) an error count.
- `helpers.streaming_bulk(...)`: stream `(ok, item)` results and control
`chunk_size`, `max_chunk_bytes`, `flush_after_seconds`, retries, and whether
successful items are yielded.
- `helpers.parallel_bulk(...)`: parallelize chunk submission when throughput
justifies the extra concurrency and ordering is not required.
- `helpers.scan(client, query=...)`: scroll through matching documents; use
`preserve_order=True` only when the ordering cost is intentional.
- `helpers.reindex(client, source_index, target_index, ...)`: use the helper for
server-side reindex workflows and verify target mappings/settings separately.
- `async_bulk`, `async_streaming_bulk`, `async_scan`, and `async_reindex`: use
with `AsyncElasticsearch` and `await`/`async for` as appropriate.
Read [api-reference.md](references/api-reference.md) for signatures and return
shapes, [workflows.md](references/workflows.md) for action/generator recipes,
and [troubleshooting.md](references/troubleshooting.md) for partial failures,
retries, and service errors. Run [bulk_actions_smoke.py](scripts/bulk_actions_smoke.py)
for an offline action-shape check; it never connects to a cluster.
## Action contract
An action is usually a mapping containing `_index`, optionally `_id`, and a
payload. `_op_type` defaults to `index`; use `create`, `update`, or `delete`
explicitly. Index/create actions use the document fields; update actions use
`doc`, `doc_as_upsert`, or a script; delete actions contain metadata only.
Generate actions lazily so large input sets do not occupy memory. Validate the
index name, operation, identifiers, and JSON-serializable payload before
sending.
## Safety and correctness
- Use bounded chunks and explicit retry policy. A retry on 429 can be useful;
blindly retrying a non-idempotent write can duplicate effects.
- Handle `BulkIndexError` or inspect streamed item results instead of assuming a
successful HTTP response means every item succeeded.
- Do not run scan/reindex or index deletion against a production cluster until
the query, target, privileges, and dry-run/rollback plan are reviewed.
- Route query construction to [dsl-search](../dsl-search/SKILL.md) and ES|QL
construction to [esql-query-builder](../esql-query-builder/SKILL.md).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!