All notable changes to ScaledSearch are documented here. This project follows Keep a Changelog and Semantic Versioning.
reindexoperations acceptop_type,conflicts,version_type, andquery, enabling a delta-safe zero-downtime reindex while clients are still writing (backfill + delta catch-up) directly in YAML. Omitting these reproduces the previous behavior. The zero-downtime guide documents the full live-writes sequence, including the_refresh-before-swap step required under a highrefresh_interval. (#20)
- Resolved TypeScript errors in cluster detection (
version.distributionreads ingetClusterInfo/detectEngine), sotsc --noEmitis clean. No behavior change. (#20)
migrate validatenow simulates the end-state from your migration files (offline), surfacing wildcard and reindex-destination resolution — not just file integrity. (#12)migrate importcaptures more of the cluster: index templates, ingest pipelines, alias options, and closed-index state. (#14)migrate importautomatically excludes built-in/system-owned templates, pipelines, and indices (APM, Fleet, ML, ILM/SLM history, leading-dot system indices, and OpenSearch plugin state) so the generated baseline doesn't fight the cluster on replay. (#14)
- Failed migrations are no longer recorded as applied. (#9)
migrate initnow derives a per-project history index name, so multiple projects on one cluster no longer share history. (#10)- History index hashing resolves the real path of the cwd first, fixing symlink, long-name, and upgrade-path edge cases. (#11)
migrate initself-heals partial setups and reports filesystem errors with friendly messages. (#13)status,diff, andapplyhandle corrupted migration files gracefully and surface orphaned history entries instead of crashing. (#15, #16, #17)applyvalidates--target, honors it in dry-run, and reports friendly errors on corrupt files. (#17)
- CLI version is now read from
package.jsoninstead of a hardcoded string, so--versionalways matches the published release.
- Race in stale-lock recovery in
acquireLock. (#8)
- Expanded test coverage: OpenSearch coverage, engine factory + status tests, import/diff/engine-extras, history, rollback, and migrate-apply edge cases.
- 1.0.2 shipped with a stale
dist/that did not include the bug fix below. Published with aprepublishOnlyhook that rebuilds + retests before every publish, so this cannot happen again.
Skipped. Tag exists in git but the npm tarball was built before the fix and behaves identically to 1.0.1. Use 1.0.3 instead.
create_indexoperations using Flyway-stylebody: { mappings: ... }were double-wrapped before being sent to the cluster, causing Elasticsearch to reject them withmapper_parsing_exception: Root mapping definition has unsupported parameters. Bothmappings:andbody:shapes now normalize correctly. (#6)
- Test suite (Vitest): 42 unit tests + 26 integration tests = 68 total.
- Docker Compose harness with Elasticsearch 9.0 + OpenSearch 2.19 for integration tests.
npm test,test:unit,test:integration,test:all,test:watch,test:coverage,docker:up,docker:downscripts.
- Initial public release.