Elasticsearch File Ingest
aspectrr/deer
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingest --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/elasticsearch-file-ingest .claude/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .claude/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingestType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingest --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/elasticsearch-file-ingest .agents/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .agents/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingest --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/elasticsearch-file-ingest .cursor/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .cursor/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Kilo-Org/kilo-marketplace.git --path skills/elasticsearch-file-ingest--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingest --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/elasticsearch-file-ingest .gemini/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .gemini/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingestInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/elasticsearch-file-ingest .github/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .github/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Kilo-Org/kilo-marketplace elasticsearch-file-ingest --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Kilo-Org/kilo-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/elasticsearch-file-ingest .opencode/skills/elasticsearch-file-ingest && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "elasticsearch-file-ingest" agent skill from https://github.com/Kilo-Org/kilo-marketplace/tree/main/skills/elasticsearch-file-ingest into .opencode/skills/elasticsearch-file-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elasticsearch-file-ingest", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
elasticsearch-file-ingestIngest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
Elasticsearch File Ingest is an agent skill from Kilo-Org/kilo-marketplace. Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms. Use when loading files or batch importing data — not for reindexing, general ingest pipeline design, or bulk API patterns.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `examples/mappings.json`, `examples/skip-transform.js` and `examples/split-transform.js`).
It sits in Backend & APIs, covering Search implementation, DataFrames and CSV and tabular files. It works with Elasticsearch. The repository describes itself as: Kilo Marketplace - A curated collection of Skills, MCP Servers, and Modes for enhancing AI agent capabilities across the Kilo ecosystem—including Kilo Code (VS Code extension)… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit ff51758. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodenpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
elastic.coFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ELASTICSEARCH_API_KEYELASTICSEARCH_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Elasticsearch File Ingest loads about 2.8k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 69 tokens; SKILL.md has 702 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Kilo-Org/kilo-marketplace at commit ff51758, republished under its Apache-2.0 licence (© Kilo-Org). 702 words, ~2,786 tokens.
.claude/skills/elasticsearch-file-ingest/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Stream-based ingestion and transformation of large data files (NDJSON, CSV, Parquet, Arrow IPC) into Elasticsearch.
logs/*.json)This skill is self-contained. The scripts/ folder and package.json live in this skill's directory. Run all commands
from this directory. Use absolute paths when referencing data files located elsewhere.
Before first use, install dependencies:
npm installElasticsearch connection is configured by users exclusively via environment variables. Never pass credentials as command-line arguments. If the test fails, output the setup options below to the user, then stop. Do not proceed with ingestion until a successful connection test.
export ELASTICSEARCH_CLOUD_ID="<your-cloud-id>"
export ELASTICSEARCH_API_KEY="<your-api-key>"export ELASTICSEARCH_URL="https://elasticsearch:9200"
export ELASTICSEARCH_API_KEY="<your-api-key>"export ELASTICSEARCH_URL="https://elasticsearch:9200"
export ELASTICSEARCH_USERNAME="<your-username>"
export ELASTICSEARCH_PASSWORD="<your-password>"For local development and testing, see Run Elasticsearch locally to spin up Elasticsearch and Kibana. After setup, export the connection variables (URL and API key or credentials) as shown in Option 2 or Option 3 above.
Keep TLS verification enabled. For a development cluster signed by a private CA, point Node.js at the reviewed CA bundle:
export NODE_EXTRA_CA_CERTS="/path/to/private-ca-bundle.pem"Verify the Elasticsearch connection before ingesting data:
node scripts/ingest.js testAlways run this first. If the test fails, resolve the connection issue before proceeding.
node scripts/ingest.js ingest --file /absolute/path/to/data.json --target my-index# NDJSON
cat /absolute/path/to/data.ndjson | node scripts/ingest.js ingest --stdin --target my-index
# CSV
cat /absolute/path/to/data.csv | node scripts/ingest.js ingest --stdin --source-format csv --target my-indexnode scripts/ingest.js ingest --file /absolute/path/to/users.csv --source-format csv --target usersnode scripts/ingest.js ingest --file /absolute/path/to/users.parquet --source-format parquet --target usersnode scripts/ingest.js ingest --file /absolute/path/to/users.arrow --source-format arrow --target users# csv-options.json
# {
# "columns": true,
# "delimiter": ";",
# "trim": true
# }
node scripts/ingest.js ingest --file /absolute/path/to/users.csv --source-format csv --csv-options csv-options.json --target usersWhen using --infer-mappings, do not combine it with --source-format csv. Inference sends a raw sample to
Elasticsearch's _text_structure/find_structure endpoint, which returns both mappings and an ingest pipeline with a CSV
processor. If --source-format csv is also set, CSV is parsed client-side and server-side, resulting in an empty
index. Let --infer-mappings handle everything:
node scripts/ingest.js ingest --file /absolute/path/to/users.csv --infer-mappings --target users# infer-options.json
# {
# "sampleBytes": 200000,
# "lines_to_sample": 2000
# }
node scripts/ingest.js ingest --file /absolute/path/to/users.csv --infer-mappings --infer-mappings-options infer-options.json --target usersnode scripts/ingest.js ingest --file /absolute/path/to/data.json --target my-index --mappings mappings.jsonnode scripts/ingest.js ingest --file /absolute/path/to/data.json --target my-index --transform transform.js--target <index> # Target index name--file <path> # Source file (supports wildcards, e.g., logs/*.json)
--stdin # Read NDJSON/CSV from stdin--mappings <file.json> # Mappings file
--infer-mappings # Infer mappings/pipeline from file/stream (do NOT combine with --source-format)
--infer-mappings-options <file> # Options for inference (JSON file)
--delete-index # Delete target index if exists
--pipeline <name> # Ingest pipeline name--transform <file.js> # Transform function (export as default or module.exports)
--source-format <fmt> # Source format: ndjson|csv|parquet|arrow (default: ndjson)
--csv-options <file> # CSV parser options (JSON file)
--skip-header # Skip first line (e.g., CSV header)--buffer-size <kb> # Buffer size in KB (default: 5120)
--total-docs <n> # Total docs for progress bar (file/stream)
--stall-warn-seconds <n> # Stall warning threshold (default: 30)
--progress-mode <mode> # Progress output: auto|line|newline (default: auto)
--debug-events # Log pause/resume/stall events
--quiet # Disable progress barsTransform functions let you modify documents during ingestion. Create a JavaScript file that exports a transform function:
// ES modules (default)
export default function transform(doc) {
return {
...doc,
full_name: `${doc.first_name} ${doc.last_name}`,
timestamp: new Date().toISOString(),
};
}
// Or CommonJS
module.exports = function transform(doc) {
return {
...doc,
full_name: `${doc.first_name} ${doc.last_name}`,
};
};Return null or undefined to skip a document:
export default function transform(doc) {
// Skip invalid documents
if (!doc.email || !doc.email.includes("@")) {
return null;
}
return doc;
}Return an array to create multiple target documents from one source:
export default function transform(doc) {
// Split a tweet into multiple hashtag documents
const hashtags = doc.text.match(/#\w+/g) || [];
return hashtags.map((tag) => ({
hashtag: tag,
tweet_id: doc.id,
created_at: doc.created_at,
}));
}{
"properties": {
"@timestamp": { "type": "date" },
"message": { "type": "text" },
"user": {
"properties": {
"name": { "type": "keyword" },
"email": { "type": "keyword" }
}
}
}
}node scripts/ingest.js ingest --file /absolute/path/to/data.json --target my-index --mappings mappings.json$ELASTICSEARCH_API_KEY, $ELASTICSEARCH_PASSWORD, $ELASTICSEARCH_CLOUD_ID, etc.). Do not run shell commands
whose output would expose secret values (e.g., echo $ELASTICSEARCH_API_KEY, env | grep KEY, printenv). Exporting
these variables and running scripts that read them internally is expected and safe — the restriction is on surfacing
secret values in command output. The only way to verify connectivity is node scripts/ingest.js test. If the test
fails, ask the user to check their environment configuration — do not attempt to diagnose credentials yourself.--delete-index flag or deleting existing indices and data)
without explicit user confirmation.node scripts/ingest.js test before ingesting data. If the connection fails, ask the user
to verify their environment configuration and re-test. Do not attempt ingestion until the test passes.--infer-mappings with --source-format. Inference creates a server-side ingest pipeline that
handles parsing (e.g., CSV processor). Using --source-format csv parses client-side as well, causing double-parsing
and an empty index. Use --infer-mappings alone for automatic detection, or --source-format with explicit
--mappings for manual control.--source-format csv with --mappings when you want client-side CSV parsing with known field types.--infer-mappings alone when you want Elasticsearch to detect the format, infer field types, and create an
ingest pipeline automatically.Consider alternatives for:
elasticsearch-reindex skill for copying, migrating, or transforming
existing Elasticsearch indices© Kilo-Org, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references) in skills/elasticsearch-file-ingest of Kilo-Org/kilo-marketplace.
Open the folder on GitHubat commit ff51758
Elasticsearch File Ingest next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Elasticsearch File Ingest this skillKilo-Org/kilo-marketplace | 190 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Elasticsearch File Ingestaspectrr/deer | 405 | — | ~684 | Automated safety check: Pass | MIT | |
| Elasticsearch Ingestelastic/agent-skills | 592 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Product Full-Text Searchlobehub/lobehub | 83k | — | ~4.1k | Automated safety check: Pass | Custom licence | |
| Foundatio Repositoriesexceptionless/Exceptionless | 2.5k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Elasticsearch Authnaspectrr/deer | 405 | — | ~1.2k | Automated safety check: Notes | MIT |
aspectrr/deer
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
elastic/agent-skills
Load CSV and JSON files into Elasticsearch indices using the bulk API and explicit mappings when field types matter.
lobehub/lobehub
Guides work on LobeHub's own product search: the shared search repository, provider choice, Elasticsearch mappings, change syncing and reindexing.
exceptionless/Exceptionless
Query, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions.
aspectrr/deer
Authenticate to Elasticsearch using native, file-based, LDAP/AD, SAML, OIDC, Kerberos, JWT, or certificate realms.
aspectrr/deer
Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security.
Kilo-Org/kilo-marketplace
Sets up and maintains AzureML-ready Python projects as uv workspaces with devcontainers, a Makefile and job YAML, so local runs match cloud jobs and experiments stay reproducible.
Kilo-Org/kilo-marketplace
Creates, inspects, edits and runs Jupyter notebooks, scaffolding experiment or tutorial notebooks from templates and preferring a Jupyter MCP server over raw JSON edits.
Kilo-Org/kilo-marketplace
Takes a plain-language dashboard request through brand setup, data exploration, planning, an interactive HTML mock and a Tableau implementation spec.
Kilo-Org/kilo-marketplace
A skill your agent uses when arranging Apache NiFi processors, process groups, ports, comments, numbering, crossing connections, dense fan-in/fan-out, or reusable readable canvas layouts.
Kilo-Org/kilo-marketplace
Render Cisco Data Fabric ingest-time routing workflows and Splunk Cloud Platform Ingest Processor setup plans with SPL2 pipelines, source types, destinations, lifecycle handoffs, queue and…
Kilo-Org/kilo-marketplace
Develop and deploy Lakeflow Jobs on Databricks via DABs, Python SDK, or the CLI.
Works with
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms. Elasticsearch File Ingest is an agent skill from Kilo-Org/kilo-marketplace. Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
Elasticsearch File Ingest fits situations like: batch importing data — not for reindexing; general ingest pipeline design; bulk API patterns.
Run `npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a claude-code`. Or copy the skill folder (skills/elasticsearch-file-ingest in Kilo-Org/kilo-marketplace) into .claude/skills/elasticsearch-file-ingest in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a codex`. Or copy the skill folder (skills/elasticsearch-file-ingest in Kilo-Org/kilo-marketplace) into .agents/skills/elasticsearch-file-ingest in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Kilo-Org/kilo-marketplace --skill elasticsearch-file-ingest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elasticsearch-file-ingest, .gemini/skills/elasticsearch-file-ingest, .github/skills/elasticsearch-file-ingest and .opencode/skills/elasticsearch-file-ingest in your project.
Going by SKILL.md and its folder, Elasticsearch File Ingest needs JavaScript for the scripts in its folder, the command-line tools its instructions call (node and npm) and credentials named ELASTICSEARCH_API_KEY and ELASTICSEARCH_PASSWORD. Our summary lists: Node.js; A credential in ELASTICSEARCH_API_KEY.
SKILL.md names 1 domain. As links in the text: elastic.co. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Elasticsearch File Ingest is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 939 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Elasticsearch File Ingest: Elasticsearch File Ingest (aspectrr/deer, 405 stars), Elasticsearch Ingest (elastic/agent-skills, 592 stars), Product Full-Text Search (lobehub/lobehub, 83k stars) and Foundatio Repositories (exceptionless/Exceptionless, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Kilo-Org (a GitHub organization) maintains it in Kilo-Org/kilo-marketplace, which has 190 GitHub stars. The repository holds 86 skills in this directory. The repository was last updated on September 28, 2026.
Source: Kilo-Org/kilo-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.