directorytree/opensearch-migrations

OpenSearch migrations for Laravel

Maintainers

Package info

github.com/DirectoryTree/OpenSearchMigrations

pkg:composer/directorytree/opensearch-migrations

Statistics

Installs: 169

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.0 2026-06-23 13:40 UTC

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.