This is our first release in the 7.x cycle. It is compatible with Elasticsearch 7.x. Please review the breaking changes carefully. Most of them are related to the type removal in Elasticsearch.
Backward Compatibility Breaks
- The
\Elastica\Query::$_suggest
property has been renamed to$hasSuggest
and is now private, it should not be used from extending classes #1679 \Elastica\Document
expects a string as ID, not an int #1672.- Removed
\Elastica\Query\GeohashCell
query, use\Elastica\Query\GeoBoundingBox
instead #1672. - Deprecated usage of
\Elastica\Type
class,\Elastica\Index
class must be used instead #1666 - Removed
\Elastica\Type
class,\Elastica\Index
class must be used instead #1666 - Forced index names to string in
\Elastica\Index::__construct()
#1666 - Removed Type query
\Elastica\Query\Type
#1666 - Removed
Elastica\Type
class,Elastica\Index
class must be used instead #1666 - Removed
type
handling fromElastica\Search
class #1666 - Removed
type
handling fromElastica\Bulk
andElastica\Bulk\Action
classes #1666 - Forced index names to string in
Elastica\Index::__construct()
#1666 - Removed Type query
Elastica\Query\Type
#1666 - Dropped support for PHP 7.0
- \Elastica\AbstractUpdateAction::getOptions( $fields ) no longer supports the $underscore parameter, option names must match what elasticsearch expects.
- Removed no longer supported \Elastica\Query\QueryString::setAutoGeneratePhraseQueries( $bool ) #1622
- Replaced params._agg with state context variable in scripted metric aggregations
- Camel Case and underscore parameters deprecated in 6.x have been removed
- The parameter fields deprecated in 6.x has been removed from Bulk requestedit and Update request.
- The _parent field has been removed in favour of the join field.
- hits.total is now an object in the search response hits.total
- Elastica\Reindex does not return an Index anymore but a Response.
- Elastica\Reindex->run() does not refresh the new Index after completion anymore. Use
$reindex->setParam(Reindex::REFRESH, 'wait_for')
instead. Elastica\Search->search()
andElastica\Search->count()
use request methodPOST
by default. Same forElastica\Index
,Elastica\Type\AbstractType
,Elastica\Type
.- Elastica\Client
$_config
field is now aClientConfiguration
instead of an array - Removed
\Elastica\Client::_log
,\Elastica\Log
and thelog
configuration option. Use thePsr\Log\LoggerInterface $logger
client argument to customize logging. - Changed all factory methods to make use of late static bindings by using
static
instead ofself
keyword. This is to increase extendability for classes with factory methods.
Bugfixes
- Always set the Guzzle
base_uri
to support connecting to multiple ES hosts. #1618 - Properly handle underscore prefixes in options and bulk request metadata (cf upstream. #1621
- Preserve zeros while doing float serialization to JSON. #1635
- Add
settings
level on json to create an Index in all tests (it worked till 6.x but it shouldn't work)
Added
- support for elasticsearch-php ^7.0
- Added
ParentAggregation
#1616 - Elastica\Reindex missing options (script, remote, wait_for_completion, scroll...)
- Added
AdjacencyMatrix
aggregation #1642 - Added request method parameter to
Elastica\SearchableInterface->search()
andElastica\SearchableInterface->count()
. Same forElastica\Search
#1441 - Added support for Field Collapsing (Issue: #1392; PR: #1653)
- Support string DSN in
\Elastica\Client
constructor for config argument #1640 - Move Client configuration in a dedicated class
- Added
callable
type hinting to$callback
inClient
constructor. #1659 - Added
setTrackTotalHits
method toElastica\Query
#1663 - Allow metadata to be set on Aggregations (via
AbstractAggregation::setMeta(array)
). #1677