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-23 16:02:06 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