directorytree / opensearch-migrations
OpenSearch migrations for Laravel
Package info
github.com/DirectoryTree/OpenSearchMigrations
pkg:composer/directorytree/opensearch-migrations
Requires
- php: ^8.2
- directorytree/opensearch-adapter: ^1.0
- directorytree/opensearch-client: ^1.0
- illuminate/console: ^11.0|^12.0|^13.0
- illuminate/database: ^11.0|^12.0|^13.0
- illuminate/filesystem: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- laravel/framework: ^11.0|^12.0|^13.0
- laravel/pint: ^1.0
- mockery/mockery: ^1.0
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^3.0
This package is auto-updated.
Last update: 2026-06-24 02:48:12 UTC
README
OpenSearch index migrations for Laravel.
Installation
Install the package with Composer:
composer require directorytree/opensearch-migrations
Publish the OpenSearch client configuration:
php artisan vendor:publish --provider="DirectoryTree\OpenSearchClient\OpenSearchClientServiceProvider"
Publish the migration configuration:
php artisan vendor:publish --provider="DirectoryTree\OpenSearchMigrations\OpenSearchMigrationsServiceProvider"
Configuration
The migration configuration is published to config/opensearch-migrations.php:
'table' => env('OPENSEARCH_MIGRATIONS_TABLE', 'opensearch_migrations'), 'connection' => env('OPENSEARCH_MIGRATIONS_CONNECTION'), 'storage_directory' => env('OPENSEARCH_MIGRATIONS_DIRECTORY', base_path('opensearch/migrations')), 'index_name_prefix' => env('OPENSEARCH_MIGRATIONS_INDEX_NAME_PREFIX', env('SCOUT_PREFIX', '')), 'alias_name_prefix' => env('OPENSEARCH_MIGRATIONS_ALIAS_NAME_PREFIX', env('SCOUT_PREFIX', '')),
Creating Migrations
Create a migration:
php artisan opensearch:make:migration create_posts_index
Migration files are stored in opensearch/migrations by default:
use DirectoryTree\OpenSearchAdapter\Indices\Mapping; use DirectoryTree\OpenSearchAdapter\Indices\Settings; use DirectoryTree\OpenSearchMigrations\Facades\Index; use DirectoryTree\OpenSearchMigrations\MigrationInterface; class CreatePostsIndex implements MigrationInterface { public function up(): void { Index::create('posts', function (Mapping $mapping, Settings $settings) { $mapping->text('title'); $mapping->text('body'); }); } public function down(): void { Index::dropIfExists('posts'); } }
Running Migrations
Run all pending migrations:
php artisan opensearch:migrate
Run a single migration:
php artisan opensearch:migrate 2026_01_01_000000_create_posts_index
Roll back the last batch:
php artisan opensearch:migrate:rollback
Roll back every migrated file:
php artisan opensearch:migrate:reset
Roll back and rerun every migration:
php artisan opensearch:migrate:refresh
Drop all indexes and rerun every migration:
php artisan opensearch:migrate:fresh
Show migration status:
php artisan opensearch:migrate:status
Credits
This package builds on a lot of the foundation and prior work from Ivan Babenko and his Elasticsearch Laravel ecosystem packages.
We're grateful for the work he has shared with the Laravel community. If this package helps your work, consider supporting Ivan through GitHub Sponsors.