{"_id":"@ahmetkasap/elasticsearch-migration","_rev":"2-47cd03e262040daa08e82e431193b3fd","name":"@ahmetkasap/elasticsearch-migration","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@ahmetkasap/elasticsearch-migration","version":"1.0.0","keywords":["elasticsearch","opensearch","migration","database","schema","cli","typescript"],"author":{"name":"Ahmet Kasap"},"license":"MIT","_id":"@ahmetkasap/elasticsearch-migration@1.0.0","maintainers":[{"name":"ahmetkasap","email":"aahmetkasap@gmail.com"}],"homepage":"https://github.com/ahmetkasap/elasticsearch-migration#readme","bugs":{"url":"https://github.com/ahmetkasap/elasticsearch-migration/issues"},"bin":{"es-migrate":"dist/cli.js"},"dist":{"shasum":"611939bee7947eae44cac7c338ca99428117b7b1","tarball":"https://registry.npmjs.org/@ahmetkasap/elasticsearch-migration/-/elasticsearch-migration-1.0.0.tgz","fileCount":22,"integrity":"sha512-vaaF2Sak8Px5Q8U0SLv7ZJJVSF0x758gu0/z2FP9+61JMQZ9ZlQ6LN55Gj0yaz4OuXfhxijBT2zoAu+0L8kirQ==","signatures":[{"sig":"MEYCIQD0D/dYwkQafN5JQnLpUrMRQRe+QLwUba/disQN151pmgIhAIRj3CeihTtz45dstQ4Go4o/06kkf/7n5e6cIAseyB8C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29165},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","migrate:up":"tsx src/cli/up.ts","migrate:down":"tsx src/cli/down.ts","migrate:create":"tsx src/cli/create.ts","migrate:status":"tsx src/cli/status.ts","prepublishOnly":"npm run build","migrate:alias-info":"tsx src/cli/alias-info.ts","migrate:list-indices":"tsx src/cli/list-indices.ts"},"_npmUser":{"name":"ahmetkasap","actor":{"name":"ahmetkasap","type":"user","email":"aahmetkasap@gmail.com"},"email":"aahmetkasap@gmail.com"},"repository":{"url":"git+https://github.com/ahmetkasap/elasticsearch-migration.git","type":"git"},"_npmVersion":"10.9.2","description":"Elasticsearch/OpenSearch migration tool","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.4.5","commander":"^11.1.0","@opensearch-project/opensearch":"^2.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.8.3","@types/node":"^22.14.0"},"_npmOperationalInternal":{"tmp":"tmp/elasticsearch-migration_1.0.0_1751568455771_0.0585514898617876","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ahmetkasap/elasticsearch-migration","version":"1.0.1","description":"Elasticsearch/OpenSearch migration tool","main":"dist/index.js","type":"module","bin":{"es-migrate":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","migrate:create":"tsx src/cli/create.ts","migrate:up":"tsx src/cli/up.ts","migrate:down":"tsx src/cli/down.ts","migrate:status":"tsx src/cli/status.ts","migrate:list-indices":"tsx src/cli/list-indices.ts","migrate:alias-info":"tsx src/cli/alias-info.ts","prepublishOnly":"npm run build"},"keywords":["elasticsearch","opensearch","migration","database","schema","cli","typescript"],"author":{"name":"Ahmet Kasap"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ahmetkasap/elasticsearch-migration.git"},"bugs":{"url":"https://github.com/ahmetkasap/elasticsearch-migration/issues"},"homepage":"https://github.com/ahmetkasap/elasticsearch-migration#readme","dependencies":{"@ahmetkasap/elasticsearch-migration":"^1.0.0","@opensearch-project/opensearch":"^2.4.0","commander":"^11.1.0","dotenv":"^16.4.5"},"devDependencies":{"@types/node":"^22.14.0","tsx":"^4.7.0","typescript":"^5.8.3"},"engines":{"node":">=18.0.0"},"_id":"@ahmetkasap/elasticsearch-migration@1.0.1","types":"./dist/index.d.ts","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-bsuzHtiH12dliqhgdVO4NeqF7ZcWz0d+NsyTgCmlpNW1G1unzMETlWMy2AGfEhywuzY88hFy7gSsbYtVgVW5Iw==","shasum":"a783f149a969161300cb67c050571fe648842c44","tarball":"https://registry.npmjs.org/@ahmetkasap/elasticsearch-migration/-/elasticsearch-migration-1.0.1.tgz","fileCount":22,"unpackedSize":29803,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHjavgBmsjaZDZApaWyRni9u73CYifSm6YUmV4HzVyTaAiADCih9Z51ybbrnyqljkGzwwnUgmThvD0rkNbC1gys9yQ=="}]},"_npmUser":{"name":"ahmetkasap","email":"aahmetkasap@gmail.com","actor":{"name":"ahmetkasap","email":"aahmetkasap@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"ahmetkasap","email":"aahmetkasap@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elasticsearch-migration_1.0.1_1751568973985_0.9156769668102556"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-03T18:47:35.704Z","modified":"2025-07-03T18:56:14.377Z","1.0.0":"2025-07-03T18:47:35.950Z","1.0.1":"2025-07-03T18:56:14.185Z"},"bugs":{"url":"https://github.com/ahmetkasap/elasticsearch-migration/issues"},"author":{"name":"Ahmet Kasap"},"license":"MIT","homepage":"https://github.com/ahmetkasap/elasticsearch-migration#readme","keywords":["elasticsearch","opensearch","migration","database","schema","cli","typescript"],"repository":{"type":"git","url":"git+https://github.com/ahmetkasap/elasticsearch-migration.git"},"description":"Elasticsearch/OpenSearch migration tool","maintainers":[{"name":"ahmetkasap","email":"aahmetkasap@gmail.com"}],"readme":"---\n# Elastic Migrate\n\nA migration tool for Elasticsearch/OpenSearch. This package helps you manage your Elasticsearch indices and mappings with ease.\n---\n\n## 🚀 Installation\n\n```bash\nnpm install @ahmetkasap/elasticsearch-migration\n```\n\n---\n\n## ⚡️ Usage\n\n### 1. Create a New Migration\n\n```bash\nnpx es-migrate create <migration-name>\n```\n\nThis command creates a new migration file. For example:\n\n```bash\nnpx es-migrate create create_users_index\n```\n\n---\n\n### 2. Run Migrations\n\n```bash\nnpx es-migrate up\n```\n\nApplies all pending migrations in order.\n\n---\n\n### 3. Check Migration Status\n\n```bash\nnpx es-migrate status\n```\n\nDisplays the status of all migrations.\n\n---\n\n### 4. List Indices\n\n```bash\nnpx es-migrate list-indices\n```\n\nLists all indices in your Elasticsearch cluster.\n\n---\n\n### 5. Show Alias Information\n\n```bash\nnpx es-migrate alias-info\n```\n\nDisplays detailed information about index aliases.\n\n---\n\n### 6. Rollback Last Migration\n\n```bash\nnpx es-migrate down\n```\n\nReverts the last applied migration (rollback).\n\n---\n\n## ⚙️ Configuration\n\nYou can configure the tool using environment variables:\n\n```env\n# Elasticsearch connection details\nELASTIC_SEARCH_NODE=http://localhost:9200\nELASTIC_SEARCH_USERNAME=elastic\nELASTIC_SEARCH_PASSWORD=password\n\n# Directory for migration files\nMIGRATIONS_PATH=./migrations\n```\n\n---\n\n## 📝 Example Migration File\n\n```typescript\nimport { Client } from \"@opensearch-project/opensearch\";\nimport type { IMigration } from \"@ahmetkasap/elasticsearch-migration\";\n\nconst migration: IMigration = {\n  name: \"create_users_index\",\n  timestamp: 1703123456789,\n\n  async up(client: Client): Promise<void> {\n    await client.indices.create({\n      index: \"users\",\n      body: {\n        mappings: {\n          properties: {\n            name: { type: \"text\" },\n            email: { type: \"keyword\" },\n            age: { type: \"integer\" },\n          },\n        },\n      },\n    });\n    console.log(\"Users index created successfully\");\n  },\n\n  async down(client: Client): Promise<void> {\n    await client.indices.delete({\n      index: \"users\",\n    });\n    console.log(\"Users index deleted successfully\");\n  },\n};\n\nexport default migration;\n```\n\n---\n\n## 🧑‍💻 Programmatic Usage\n\n```typescript\nimport { MigrationService } from \"@ahmetkasap/elasticsearch-migration\";\nimport type { IMigrationConfig } from \"@ahmetkasap/elasticsearch-migration\";\n\nconst config: IMigrationConfig = {\n  node: \"http://localhost:9200\",\n  username: \"elastic\",\n  password: \"password\",\n  migrationsPath: \"./migrations\",\n};\n\nconst migrationService = new MigrationService(config);\n\n// Run all migrations\nawait migrationService.runMigrations();\n\n// Check pending migrations\nconst pending = await migrationService.getPendingMigrations();\nconsole.log(`Pending migrations: ${pending.length}`);\n```\n\n---\n\n## 🧩 Migration Interface\n\n```typescript\ninterface IMigration {\n  name: string;\n  timestamp: number;\n  up(client: Client): Promise<void>;\n  down?(client: Client): Promise<void>;\n}\n```\n\n---\n\n## ⭐️ Features\n\n- ✅ TypeScript support\n- ✅ Elasticsearch/OpenSearch compatibility\n- ✅ Migration status tracking\n- ✅ Sequential migration execution\n- ✅ Rollback support\n- ✅ CLI interface\n- ✅ Programmatic API\n\n---\n\n## 🛠 Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run in development mode\nnpm run dev\n\n# Build\nnpm run build\n\n# Start (run built version)\nnpm start\n\n# Migration commands (development)\nnpm run migrate:create <name>    # Create new migration\nnpm run migrate:up              # Run pending migrations\nnpm run migrate:down            # Rollback last migration\nnpm run migrate:status          # Check migration status\nnpm run migrate:list-indices    # List all indices\nnpm run migrate:alias-info      # Show alias information\n\n# Build and prepare for publish\nnpm run prepublishOnly\n```\n\n---\n\n## License\n\nMIT\n\n---\n\nIf you want this as a markdown file or need further formatting (badges, npm/yarn install, etc.), just let me know!\n","readmeFilename":"README.md"}