Releases: pdphilip/laravel-elasticsearch
v5.0.7
v5.0.6
v5.0.5
This release is compatible with Laravel 10, 11 & 12
What's Changed
- Merging in bug fixes by @use-the-fork in #65
- Updated outstanding tests
- Fixed bug in relations
has()
method
Full Changelog: v5.0.4...v5.0.5
v5.0.4
This release is compatible with Laravel 10, 11 & 12
What's changed
- Connection
disconnect()
resets connection - removing connection is unnecessary in the context of Elasticsearch. Issue #64 - Added
getTotalHits()
helper method from query meta - Bug fix:
searchFuzzy()
parses options as a closure - Minor code reorganising
Full Changelog: v5.0.3...v5.0.4
v5.0.3
This release is compatible with Laravel 10, 11 & 12
What's changed
- Bug fix: Internal model attribute
meta
renamed to_meta
to avoid the issue where a model could have a field calledmeta
- Bug fix:
highlight()
passed without fields did not highlight all hits - Bug fix: Hybrid
BelongsTo
in some SQL cases used ES connection - Bug fix:
orderBy('_score')
was not parsing correctly - Bug fix: Edge case where a string value was being seen as callable
Full Changelog: v5.0.2...v5.0.3
v5.0.2
This release is compatible with Laravel 10, 11 & 12
What's changed
1. New feature, bulkInsert()
bulkInsert()
is identical to insert()
but will continue on errors and return an array of the results.
People::bulkInsert([
[
'id' => '_edo3ZUBnJmuNNwymfhJ', // Will update (if id exists)
'name' => 'Jane Doe',
'status' => 1,
],
[
'name' => 'John Doe', // Will Create
'status' => 2,
],
[
'name' => 'John Dope',
'status' => 3,
'created_at' => 'xxxxxx', // Will fail
],
]);
Returns:
{
"hasErrors": true,
"total": 3,
"took": 0,
"success": 2,
"created": 1,
"modified": 1,
"failed": 1,
"errors": [
{
"id": "Y-dp3ZUBnJmuNNwy7vkF",
"type": "document_parsing_exception",
"reason": "[1:45] failed to parse field [created_at] of type [date] in document with id 'Y-dp3ZUBnJmuNNwy7vkF'. Preview of field's value: 'xxxxxx'"
}
]
}
2. Bug fix: distinct()
aggregation now appends searchAfter
key in meta
Full Changelog: v5.0.1...v5.0.2
v5.0.1
This release is compatible with Laravel 10, 11 & 12
What's changed
- Updated model docs for comprehensive IDE support when building queries
- Added
orderByNestedDesc()
- Removed & replaced compatibility-loader that depended on
class_alias
to set the correct traits for the given Laravel version
Full Changelog: v5.0.0...v5.0.1
v5.0.0
We’re excited to announce v5 of the laravel-elasticsearch package - compatible with Laravel 10, 11, and 12.
Acknowledgement
V5 is the brainchild of @use-the-fork and is a near-complete rewrite of the package; packed with powerful new features, deep integration with Elasticsearch’s full capabilities, and a much tighter alignment with Laravel’s Eloquent. It lays a solid, future-proof foundation for everything that comes next.
Upgrading
-
Please take a look at the upgrade guide carefully, as there are several significant breaking changes.
"pdphilip/elasticsearch": "^5",
Breaking Changes
1. Connection
- Index Prefix Handling
TheES_INDEX_PREFIX
no longer auto-appends an underscore (_
).
Old behavior:ES_INDEX_PREFIX=my_prefix
→my_prefix_
New: set explicitly if needed →ES_INDEX_PREFIX=my_prefix_
2. Models
-
Model ID Field
$model->_id
is deprecated. Use$model->id
instead.
If your model had a separateid
field, you must rename it. -
Default Limit Constant
MAX_SIZE
constant is removed. Use$defaultLimit
property:use PDPhilip\Elasticsearch\Eloquent\Model; class Product extends Model { protected $defaultLimit = 10000; protected $connection = 'elasticsearch'; }
3. Queries
-
where()
Behavior ChangedNow uses term query instead of match.
// Old: Product::where('name', 'John')->get(); // match query // New: Product::whereMatch('name', 'John')->get(); // match query Product::where('name', 'John')->get(); // term query
-
orderByRandom()
RemovedReplace with
functionScore()
Docs -
Full-text Search Options Updated
Methods likeasFuzzy()
,setMinShouldMatch()
,setBoost()
removed.
Use callback-based SearchOptions instead:Product::searchTerm('espresso time', function (SearchOptions $options) { $options->searchFuzzy(); $options->boost(2); $options->minimumShouldMatch(2); })->get();
-
Legacy Search Methods Removed
All{xx}->search()
methods been removed. Use{multi_match}->get()
instead.
4. Distinct & GroupBy
-
distinct()
andgroupBy()
behavior updated. DocsReview queries using them and refactor accordingly.
5. Schema
-
IndexBlueprint
andAnalyzerBlueprint
has been removed and replaced with a singleBlueprint
class- use PDPhilip\Elasticsearch\Schema\IndexBlueprint; - use PDPhilip\Elasticsearch\Schema\AnalyzerBlueprint; use PDPhilip\Elasticsearch\Schema\Blueprint;
-
Schema::hasIndex
has been removed. UseSchema::hasTable
orSchema::indexExists
instead. -
geo($field)
field property has been replaced withgeoPoint($field)
-
{field}->index($bool)
field property has been replaced with{field}->indexField($bool)
; -
alias()
field type has been removed. UsealiasField()
instead. -
settings()
method has been replaced withwithSetting()
-
map()
method has been replaced withwithMapping()
-
analyzer()
method has been replaced withaddAnalyzer()
-
tokenizer()
method has been replaced withaddTokenizer()
-
charFilter()
method has been replaced withaddCharFilter()
-
filter()
method has been replaced withaddFilter()
6. Dynamic Indices
- Dynamic indices are now managed by the
DynamicIndex
trait. upgrade guide
New features
1. Laravel-Generated IDs
- You can now generate Elasticsearch ids in Laravel Docs
2. Fluent query options as a callback
- All clauses in the query builder now accept an optional callback of Elasticsearch options to be applied to the clause. Docs
3. Belongs to Many Relationships
- Belongs to many relationships are now supported. Docs
4. New queries
5. New aggregations
- Boxplot Aggregations Docs
- Stats Aggregations Docs
- Extended Stats Aggregations - Docs
- Cardinality Aggregations - Docs
- Median Absolute Deviation Aggregations - Docs
- Percentiles Aggregations - Docs
- String Stats Aggregations - Docs
6. Migratons: Add Normalizer
- Normalizers can now be defined in migrations. Docs
7. Direct Access to Elasticsearch PHP client
Connection::on('elasticsearch')->elastic()->{clientMethod}();
What's Changed
- V5.0.0 by @use-the-fork in #54
- Small Bug Fixes found in RC1 by @use-the-fork in #60
Full Changelog: v4.5.3...v5.0.0
v4.5.3
This release is compatible with Laravel 10 and 11
Bug fix
- Bug fix with nested of nested queries
- Minor bug in a few options when chaining: Tag: v4.5.2
Full Changelog: v4.5.1...v4.5.3
v5.0.0-RC2
This second release candidate of V5 brings in Laravel 12 compatibility along with a few bug fixes
What's Changed
- Small Bug Fixes found in RC1 by @use-the-fork in #60
Full Changelog: v5.0.0-RC1...v5.0.0-RC2