PHPackages                             directorytree/opensearch-scout-driver - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. directorytree/opensearch-scout-driver

ActiveLibrary[Search &amp; Filtering](/categories/search)

directorytree/opensearch-scout-driver
=====================================

OpenSearch driver for Laravel Scout

v1.1.0(1mo ago)1727MITPHPPHP ^8.2CI passing

Since Jun 23Pushed 1mo agoCompare

[ Source](https://github.com/DirectoryTree/OpenSearchScoutDriver)[ Packagist](https://packagist.org/packages/directorytree/opensearch-scout-driver)[ RSS](/packages/directorytree-opensearch-scout-driver/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (2)Dependencies (14)Versions (4)Used By (0)

OpenSearch Scout Driver
=======================

[](#opensearch-scout-driver)

An OpenSearch driver for Laravel Scout.

[![](https://camo.githubusercontent.com/7547034db1b3c733bc43b5ee65c34f5ae420dfd9e34e931cdefa38b226f7238a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f4469726563746f7279547265652f4f70656e53656172636853636f75744472697665722f72756e2d74657374732e796d6c3f6272616e63683d6d6173746572267374796c653d666c61742d737175617265)](https://github.com/DirectoryTree/OpenSearchScoutDriver/actions)[![](https://camo.githubusercontent.com/a6ea181080e46e8c22862a8301cc3d73ef04c72a0cb696ac17efa5fc5bc27ee9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6469726563746f7279747265652f6f70656e7365617263682d73636f75742d6472697665722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/directorytree/opensearch-scout-driver)[![](https://camo.githubusercontent.com/057512f1ba19ed0cfcbb93a997bd8f171fda5cfd710c9b6857aaf988f04f5b06/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6469726563746f7279747265652f6f70656e7365617263682d73636f75742d6472697665722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/directorytree/opensearch-scout-driver)[![](https://camo.githubusercontent.com/4094a4cf524ae88ef124f53a58b697d0edd08b1da1d17447d620352d43b42657/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6469726563746f7279747265652f6f70656e7365617263682d73636f75742d6472697665722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/directorytree/opensearch-scout-driver)

---

Installation
------------

[](#installation)

Install the package with Composer:

```
composer require directorytree/opensearch-scout-driver
```

Publish the Scout configuration file if your application has not already done so:

```
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
```

Set Scout to use OpenSearch:

```
'driver' => env('SCOUT_DRIVER', 'opensearch'),
```

Publish the OpenSearch client configuration:

```
php artisan vendor:publish --provider="DirectoryTree\OpenSearchClient\OpenSearchClientServiceProvider"
```

Publish the OpenSearch Scout configuration:

```
php artisan vendor:publish --provider="DirectoryTree\OpenSearchScoutDriver\OpenSearchScoutServiceProvider"
```

Configuration
-------------

[](#configuration)

Configure the OpenSearch client connection in `config/opensearch-client.php`:

```
'default' => env('OPENSEARCH_CONNECTION', 'default'),

'connections' => [
    'default' => [
        'hosts' => [
            env('OPENSEARCH_HOST', 'localhost:9200'),
        ],
    ],
],
```

The Scout driver configuration is published to `config/opensearch-scout.php`:

```
'refresh_documents' => env('OPENSEARCH_SCOUT_REFRESH_DOCUMENTS', false),
```

Usage
-----

[](#usage)

Use Scout as usual:

```
use App\Models\Post;

$posts = Post::search('laravel')->get();
```

The driver converts Scout builders into OpenSearch search requests and uses the configured OpenSearch client connection to index, delete, flush, and search models.

### Cursor Pagination

[](#cursor-pagination)

For deep pagination, use `cursorPaginate` with an explicit, stable sort:

```
$posts = Post::search('laravel')
    ->orderBy('published_at', 'desc')
    ->orderBy('id', 'desc')
    ->cursorPaginate(25);
```

Cursor pagination uses OpenSearch `search_after` values internally and returns Laravel's standard `CursorPaginator` response shape, including `next_cursor` and `prev_cursor`.

OpenSearch only returns reusable `search_after` values for sorted searches, so cursor pagination requires at least one explicit sort. Prefer adding a unique indexed tie-breaker, such as an indexed model key, as the final sort.

Credits
-------

[](#credits)

This package builds on a lot of the foundation and prior work from [Ivan Babenko](https://github.com/babenkoivan) 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](https://github.com/sponsors/babenkoivan).

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance94

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~15 days

Total

2

Last Release

30d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c6dd082636ff8a08df8dfdcd622ea242374d1d76dd33bceec5a6cd3ae26dc24f?d=identicon)[stevebauman](/maintainers/stevebauman)

---

Top Contributors

[![stevebauman](https://avatars.githubusercontent.com/u/6421846?v=4)](https://github.com/stevebauman "stevebauman (39 commits)")

---

Tags

phplaravelopensearchdriverscout

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/directorytree-opensearch-scout-driver/health.svg)

```
[![Health](https://phpackages.com/badges/directorytree-opensearch-scout-driver/health.svg)](https://phpackages.com/packages/directorytree-opensearch-scout-driver)
```

###  Alternatives

[babenkoivan/elastic-scout-driver

Elasticsearch driver for Laravel Scout

2764.3M8](/packages/babenkoivan-elastic-scout-driver)[babenkoivan/elastic-scout-driver-plus

Extension for Elastic Scout Driver

2873.2M4](/packages/babenkoivan-elastic-scout-driver-plus)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

399693.0k](/packages/jeroen-g-explorer)[zing/laravel-scout-opensearch

Laravel Scout custom engine for OpenSearch

36482.1k](/packages/zing-laravel-scout-opensearch)[romangrinev/laravel-opensearch-engine

Custom Laravel Scout OpenSearch Engine

1320.2k](/packages/romangrinev-laravel-opensearch-engine)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
