用途:把 CSV、NDJSON/JSON、Parquet、Arrow IPC 等数据文件流式导入 Elasticsearch,并在导入过程中做转换。适合批量加载文件、按通配符处理多文件、把单条源文档拆成多条目标文档等场景,倾向批量而非实时。
主要能力:流式处理大文件避免内存耗尽;资料称在普通硬件上可达 50k+ 文档/秒;支持 NDJSON、CSV、Parquet、Arrow IPC;可在导入时应用自定义 JavaScript 转换(富化、拆分、过滤),返回 null/undefined 跳过文档,返回数组拆分文档;支持通配符批量导入(如 logs/*.json);支持自定义 mappings、推断 mappings、指定 ingest pipeline;提供进度、停顿警告、调试事件等选项。
使用方式:需要 Elasticsearch 8.x 或 9.x,Node.js 22+。首次使用在该技能目录运行 npm install。连接信息只能用环境变量配置,不要把凭据作为命令行参数:Elastic Cloud 用 ELASTICSEARCH_CLOUD_ID 与 ELASTICSEARCH_API_KEY;直连用 ELASTICSEARCH_URL 加 API Key 或用户名密码;开发可设 ELASTICSEARCH_INSECURE=true 跳过 TLS 校验。先运行 node scripts/ingest.js test 验证连接,失败则先排查环境,不要开始导入。导入示例:node scripts/ingest.js ingest --file /absolute/path/to/data.json --target my-index;CSV 用 --source-format csv;也可用 cat 管道配合 --stdin。
限制与注意:不要同时使用 --infer-mappings 与 --source-format,否则会客户端与服务端双重解析导致空索引;前者由 Elasticsearch 自动探测格式并创建 pipeline,后者需配合 --mappings。资源索引迁移、实时采集、企业级管道或内置 transforms 有更合适方案(如 elasticsearch-reindex、Filebeat、Elastic Agent、Logstash、Elasticsearch Transforms)。不要泄露凭据,不要未经确认执行删除索引等破坏性操作。