{"id":47474,"library":"elasticsearch-migrations","title":"Elasticsearch Migrations","description":"A Node.js migration tool for Elasticsearch, similar to traditional SQL schema migrations. Current version 1.0.3. It provides a CLI (`elastic-migrate`) for creating, applying, and rolling back migrations, as well as seeding data. Requires Node.js >=14.17.0, ^16.0.0, or >=18.0.0 and Elasticsearch 8.7. Compared to other ES migration tools, it offers a Knex-like interface with batch rollbacks and seed support, but may lack extensive community adoption.","status":"active","version":"1.0.3","language":"javascript","source_language":"en","source_url":"git://github.com/christopherbradleybanks/elasticsearch-migrations","tags":["javascript","migrate","migrations","elastic","elasticsearch","schema","db","nosql","seed"],"install":[{"cmd":"npm install elasticsearch-migrations","lang":"bash","label":"npm"},{"cmd":"yarn add elasticsearch-migrations","lang":"bash","label":"yarn"},{"cmd":"pnpm add elasticsearch-migrations","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Package is CommonJS-only; no ESM exports. Use require().","wrong":"import ElasticMigrations from 'elasticsearch-migrations';","symbol":"ElasticMigrations (default)","correct":"const ElasticMigrations = require('elasticsearch-migrations');"},{"note":"Must instantiate ElasticMigrations with a config object to access migrate/seed.","wrong":"const { migrate } = require('elasticsearch-migrations');","symbol":"migrate, seed (instance methods)","correct":"const ElasticMigrations = require('elasticsearch-migrations');\nconst { migrate, seed } = new ElasticMigrations(config);"},{"note":"Package does not ship TypeScript definitions; use @types/elasticsearch or any type.","wrong":null,"symbol":"config object (TypeScript)","correct":"const config: any = { elasticsearch: { host: 'localhost:9200' } };"}],"quickstart":{"code":"const ElasticMigrations = require('elasticsearch-migrations');\nconst config = {\n  elasticsearch: {\n    host: process.env.ES_HOST ?? 'localhost:9200'\n  }\n};\nconst { migrate, seed } = new ElasticMigrations(config);\n\nasync function run() {\n  await migrate.make('create_users');\n  await migrate.up('20230524_create_users.js');\n}\nrun().catch(console.error);","lang":"javascript","description":"Shows CommonJS require, config object with environment variable, instantiation, and basic migration creation/application."},"warnings":[{"fix":"Ensure Elasticsearch cluster is running version 8.7 or upgrade the package if available.","message":"Elasticsearch 8.7 required; older versions may have incompatibilities.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Upgrade Node.js to ^14.17.0 || ^16.0.0 || >=18.0.0.","message":"Node.js versions prior to 14.17.0 are not supported; may throw errors on older runtimes.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use `elastic-migrate migrate:make <name>` from the command line after global install.","message":"CLI commands use 'elastic-migrate' not 'elasticsearch-migrations'.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Create an instance: `const Em = new ElasticMigrations(config)` then use `Em.migrate`.","message":"Programmatic usage requires instantiating ElasticMigrations with a config object; static methods are not exposed.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Create a declaration file: `declare module 'elasticsearch-migrations';` or use `// @ts-ignore`.","message":"No type definitions provided; TypeScript projects must declare module types manually.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.0.3':17 '14.17.0':39 '16.0.0':40 '18.0.0':42 '8.7':45 'adopt':70 'appli':27 'back':30 'batch':60 'cli':21 'communiti':69 'compar':46 'creat':26 'current':15 'data':36 'db':77 'elast':23,74 'elastic-migr':22 'elasticsearch':1,8,44,75 'es':49 'extens':68 'interfac':58 'javascript':71 'knex':56 'knex-lik':55 'lack':67 'like':57 'may':66 'migrat':2,5,14,24,31,50,72,73 'node.js':4,38 'nosql':78 'offer':53 'provid':19 'requir':37 'roll':29 'rollback':61 'schema':13,76 'seed':35,63,79 'similar':9 'sql':12 'support':64 'tool':6,51 'tradit':11 'version':16 'well':33","created_at":"2026-06-07T16:51:42.030332+00:00","updated_at":"2026-06-07T16:51:42.030332+00:00","problems":[{"fix":"Run `npm install elasticsearch-migrations --save` or `npm install -g elasticsearch-migrations`.","cause":"Package not installed locally or globally in the current path.","error":"Cannot find module 'elasticsearch-migrations'"},{"fix":"Use `const ElasticMigrations = require('elasticsearch-migrations');`","cause":"Using ES6 import syntax (import ElasticMigrations from '...') on CommonJS module without default export.","error":"ElasticMigrations is not a constructor"},{"fix":"Instantiate: `const em = new ElasticMigrations(config);` then use `em.migrate.make(...)`.","cause":"Calling `migrate()` directly on required module instead of instantiated object.","error":"migrate is not a function"},{"fix":"Create a 'migrations' folder in project root or set `migrationsDir` in config object.","cause":"Default migrations directory does not exist or is not configured.","error":"ENOENT: no such file or directory, open 'migrations/'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/christopherbradleybanks/elasticsearch-migrations#readme","github":"git://github.com/christopherbradleybanks/elasticsearch-migrations","docs":null,"changelog":null,"pypi":null,"npm":"elasticsearch-migrations","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}