NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #4750 most downloaded on Packagist
An OpenSearch implementation of Laravel's Eloquent ORM
Last release 1 months ago
19 Aug 2026
Release timing varies
gaps range from 2 weeks to 8 months
Some releases are documented
notes for 5 of 18 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
18 releases · first in 2024
Scrolling on OpenSearch 3.x - cursor() and chunk() released their scroll context through the client's deprecated url-path branch, which rawurlencodes…
This release is compatible with Laravel 11, 12 & 13, and with OpenSearch 2.x & 3.x
cursor() returns a LazyCollection - matching Laravel's own Query\Builder::cursor() and
Eloquent\Builder::cursor(), so cursor()->chunk(), ->map(), ->filter() and ->remember()
all work instead of fataling with Call to undefined method Generator::chunk(). Thanks to
@BobbyBorisov -
#28cursor() and chunk() released their scroll context through
the client's deprecated url-path branch, which rawurlencodes the scroll id. OpenSearch 3.x
rejects the result (Cannot parse scroll id / Illegal base64 character 25) where 2.x tolerated
it. Both paths now drive the scroll directly and keep the id in the request body. It only bit when
the base64 id happened to contain a character needing encoding, so it read as intermittentcursor() crashed on a fresh connection - Processor::getRawResponse() dereferenced a null
raw response (Call to a member function asArray() on null). Only select, insert and aggregate
processing assign one, and a scroll runs none of them, so any cursor that was the first query on
its connection died. Every existing cursor test inserted first, which is why nothing caught itfinally block clears the scroll even when a consumer
abandons the cursor early, which the previous path did not guaranteecursor() now returns LazyCollection instead of Generator. LazyCollection is an
IteratorAggregate, not an Iterator, so anything type-hinting Generator or Iterator against
the old return value needs updating. Iterating with foreach is unaffectedCannot rewind a generatorSearchResponseIterator and SearchHitIterator helpers, ahead of their
removal in opensearch-php 3.0.0:latest silently became 3.8.0 and turned every job red at
once with no package changeLaravel 11 notice: Laravel 11 is past its security window, and three advisories now cover the entire 11.x branch with no 11.x release that clears them (the fixes only ever landed on 12.x and 13.x). Composer 2.9 and up block advisory-affected versions while resolving, so on Laravel 11
composer requireandcomposer updatewill refuse to install anything, this package included.composer installfrom an existing lock file is unaffected, so deployments keep working.This package still supports and tests Laravel 11, and will keep doing so. If you need to install or update on it,
composer config policy.advisories.block falselifts the block. The real fix is moving to Laravel 12 or 13.
Full Changelog: https://github.com/pdphilip/laravel-opensearch/compare/v3.1.0...v3.2.0
One column per month.
> Future-proofing note: After GitHub incorrectly shadow-banned my account (since reinstated with no
Future-proofing note: After GitHub incorrectly shadow-banned my account (since reinstated with no explanation beyond "it shouldn't happen again"), all packages are now mirrored to GitLab. GitHub remains the home for issues, PRs, and community collaboration, but Packagist downloads exclusively from GitLab to ensure uninterrupted access to releases regardless of GitHub's actions.
This release is compatible with Laravel 11, 12 & 13
HasCollection compatibility)searchQueryString(), orSearchQueryString(), searchNotQueryString(),
orSearchNotQueryString() with full QueryStringOptions support -
DocswithTrackTotalHits(bool|int|null) to override the default 10k hit count capcreateOrFail() throws BulkInsertQueryException (409) on duplicate IDs
instead of upserting - DocswithRefresh(true|false|'wait_for') to control index refresh behavior on
writes - DocscreateOnly() and withOpType('create') for dedupe insert semantics with
per-document _op_type supportGeneratesTimeOrderedIds trait for sortable, chronologically-ordered
20-character IDs - DocsQueryStringOptions and SimpleQueryStringOptions classescomposer test:l11, composer test:l12, composer test:l13, composer test:allUndefined array key "error" when OpenSearch returns responses without
the expected error.type structureop_type=create - bulk response uses create key, not
index; now uses array_key_first() with proper 409 status code inferencegetFieldsMapping() now uses _mapping API instead of
_mapping/field/* (OpenSearch PHP client returns empty for wildcard field queries)hasColumns() - iterates individual field checks instead of comma-separated query (same
OpenSearch PHP client limitation).get() call)Laravel/v11/ and Laravel/v12/ directories into 4
self-contained traits in Laravel/Compatibility/ using inline version checks with spread operatorsnewCollection() override on base Model to prevent L13.3 HasCollection abstract class
instantiationopensearch-project/opensearch-php updated to ^2.6Full Changelog: https://github.com/pdphilip/laravel-opensearch/compare/v3.0.3...v3.1.0
This release is compatible with Laravel 10, 11 & 12
This release is compatible with Laravel 10, 11 & 12
processBulkInsert(), rawAggregation() & rawDsl() - close #19Full Changelog: https://github.com/pdphilip/laravel-opensearch/compare/v3.0.2...v3.0.3
This release is compatible with Laravel 10, 11 & 12
This release is compatible with Laravel 10, 11 & 12
default limit and retriesFull Changelog: https://github.com/pdphilip/laravel-opensearch/compare/v3.0.1...v3.0.2
This release is compatible with Laravel 10, 11 & 12
This release is compatible with Laravel 10, 11 & 12
What's Changed Bug fix: Chunking $count value fixed for setting query limit correctly, via https://github.com/pdphilip/laravel-elasticsearch/issues/68
Full Changelog: https://github.com/pdphilip/laravel-opensearch/compare/v3.0.0...v3.0.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →