PackageTrack
Sign in Get early access

ruflin/elastica

Elasticsearch Client

9.0.0 54M downloads/mo #856 most downloaded on Packagist ruflin/Elastica

What this package is like to depend on

Last release 10 months ago

01 Oct 2025

Release timing varies

gaps range from 8 days to 11 months

Some releases are documented

notes for 39 of 74 stable releases

Nothing withdrawn

no release was ever pulled

14 years old

82 releases · first in 2012

2 releases in the last 12 months

see the full history below

Release timeline

82 releases · Mar 2012 to Oct 2025
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 60 of 82
  1. 9.0.0 01 Oct 2025
    Release notes

    Changelog

    Backward Compatibility Breaks

    • Elastica\IndexTemplate now works only with new _index_template API. You should use Elastica\Template to use the deprecated API #2274
    • Dropped support for PHP <8.1 #2246
    • Removed 3rd $method argument from the Elastica\SearchableInterface::search and Elastica\SearchableInterface::count as they are not unused anymore. The following classes are affected: Elastica\Search and Elastica\Index #2256
    • Removed Elastica\Request class as constants are not used anymore and no longer needed. #2256

    Added

    • Added support for Component Template #2274
    • Added support for Index Template #2274
    • Added Template class to target only legacy Template #2274
    • Added support for PHP 8.5 #2253

    Changed

    • Upgrade PHPUnit from 9.5 to 10.5 #2251
    • Update phpstan to 2.x #2252

    Fixed

    • Elastica\Query\BoolQuery::toArray no longer changes $this->_params to \stdClass when empty #2241
    • Fixed Client retries configuration to allow zero retries by changing condition from > 0 to >= 0 #2278

    Auto generated release notes

    What's Changed

    • [8.x] Fix readme badges by @malberts in #2238
    • fix: do not mutate BoolQuery instance in toArray method by @MrkMrk00 in #2241
    • Update Ubuntu version for testing to 24.04 by @ruflin in #2243
    • Add elasticsearch 9 support by @sidz in #2246
    • Add intstructions for Github Copilot by @ruflin in #2248
    • Add unit test for Elastica\Query\FunctionScore::DECAY_EXPONENTIAL by @ruflin in #2249
    • Upgrade PHPUnit from 9.5 to 10.5 by @sidz in #2251
    • Update phpstan to 2.x by @sidz in #2252
    • Support PHP 8.5 by @sidz in #2253
    • Remove unused method argument in the Elastica\SearchableInterface methods in 9.x by @sidz in #2256
    • Add CLAUDE.md file to repository by @ruflin in #2259
    • Enhances AI instructions files by @ruflin in #2263
    • Fix PHPStan and PHP-CS-Fixer Docker commands and PHP 8.4 compatibility by @ruflin in #2262
    • Fix Elasticsearch cluster discovery configuration to ensure green health status by @ruflin in #2266
    • Add Claude Code GitHub Workflow by @ruflin in #2264
    • Support git worktree inside the repository by @ruflin in #2267
    • Fix Makefile command issues to ensure all targets work properly by @ruflin in #2268
    • Update default Elasticsearch version by @ruflin in #2270
    • Update docker compose files to follow new recommendations, use latest… by @sidz in #2271
    • Disable Claude PR reviews for now by @ruflin in #2275
    • Add component and legacy Template, update IndexTemplate by @nyroDev in #2274
    • [Rector] Apply TypedPropertyFromStrictConstructorRector rule by @sidz in #2272
    • Add AGENTS.md to replace other similar files by @ruflin in #2280
    • Fix: Allow zero retries in Client configuration by @ruflin in #2282
    • Prepare 9.0.0 release by @ruflin in #2288

    New Contributors

    Full Changelog: 8.1.0...9.0.0

    Open source →
    Release notes

    Backward Compatibility Breaks

    • Elastica\IndexTemplate now works only with new _index_template API. You should use Elastica\Template to use the deprecated API #2274
    • Dropped support for PHP <8.1 #2246
    • Removed 3rd $method argument from the Elastica\SearchableInterface::search and Elastica\SearchableInterface::count as they are not unused anymore. The following classes are affected: Elastica\Search and Elastica\Index #2256
    • Removed Elastica\Request class as constants are not used anymore and no longer needed. #2256

    Added

    • Added support for Component Template #2274
    • Added support for Index Template #2274
    • Added Template class to target only legacy Template #2274
    • Added support for PHP 8.5 #2253

    Changed

    • Upgrade PHPUnit from 9.5 to 10.5 #2251
    • Update phpstan to 2.x #2252

    Fixed

    • Elastica\Query\BoolQuery::toArray no longer changes $this->_params to \stdClass when empty #2241
    • Fixed Client retries configuration to allow zero retries by changing condition from > 0 to >= 0 #2278
    Open source →
  2. 8.2.0 23 Sep 2025
    Release notes

    Added

    • Added support for PHP 8.5 #2254
    • Added support for Component Template #2257
    • Added support for Index Template, using useLegacy = false #2257
    • Added Template class to target only legacy Template #2257

    Deprecated

    • Deprecated Elastica\Template because it's deprecated since version 7.8 on ElasticSearch #2257

    Fixed

    • Elastica\Query\BoolQuery::toArray no longer changes $this->_params to \stdClass when empty #2241
    • Fixed Client retries configuration to allow zero retries by changing condition from > 0 to >= 0 #2278

    New Contributors

    Full Changelog: 8.1.0...8.2.0

    Open source →
  3. 8.1.0 29 Nov 2024
    Release notes

    Added

    • Added support for the multi-match query type bool_prefix #2220
    • Added support for PHP 8.4 #2221
    • Added support for custom key to IpRange and GeoDistance addRange using a common trait #2227
    • Added bucket sort aggregation #2229

    Fixed

    • Fixed Pipeline Processor handling to allow for multiple processors of the same type #2218

    New Contributors

    Full Changelog: 8.0.0...8.1.0

    Open source →
    Release notes

    Added

    • Added support for the multi-match query type bool_prefix #2220
    • Added support for PHP 8.4 #2221
    • Added support for custom key to IpRange and GeoDistance addRange using a common trait #2227
    • Added bucket sort aggregation #2229

    Fixed

    • Fixed Pipeline Processor handling to allow for multiple processors of the same type #2218
    Open source →
  4. 8.0.0 29 May 2024
    Release notes

    This is first 8.x GA release for Elastica. It contains a list of breaking changes. Have a look at the Upgrade guide.

    8.0.0 is a huge milestone and a big thanks to everyone in the community that made this possible!

    Backward Compatibility Breaks

    • Dropped support for PHP <8.0 #2131
    • Removed deprecated classes in 7.x #2132
      • Elastica\Exception\ElasticsearchException -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Exception\ResponseException::getElasticsearchException() -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Processor\Append -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Attachment -> use Elastica\Processor\AttachmentProcessor instead
      • Elastica\Processor\Convert -> use Elastica\Processor\ConvertProcessor instead
      • Elastica\Processor\Date -> use Elastica\Processor\DateProcessor instead
      • Elastica\Processor\DateIndexName -> use Elastica\Processor\DateIndexNameProcessor instead
      • Elastica\Processor\DotExpander -> use Elastica\Processor\DotExpanderProcessor instead
      • Elastica\Processor\Fail -> use Elastica\Processor\FailProcessor instead
      • Elastica\Processor\Join -> use Elastica\Processor\JoinProcessor instead
      • Elastica\Processor\Json -> use Elastica\Processor\JsonProcessor instead
      • Elastica\Processor\Kv -> use Elastica\Processor\KvProcessor instead
      • Elastica\Processor\Lowercase -> use Elastica\Processor\LowercaseProcessor instead
      • Elastica\Processor\Remove -> use Elastica\Processor\RemoveProcessor instead
      • Elastica\Processor\Rename -> use Elastica\Processor\RenameProcessor instead
      • Elastica\Processor\Set -> use Elastica\Processor\SetProcessor instead
      • Elastica\Processor\Sort -> use Elastica\Processor\SortProcessor instead
      • Elastica\Processor\Split -> use Elastica\Processor\SplitProcessor instead
      • Elastica\Processor\Trim -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Uppercase -> use Elastica\Processor\UppercaseProcessor instead
      • Elastica\Query\Common -> use Elastica\Query\MatchQuery instead
      • Elastica\QueryBuilder\DSL\Query::common_terms() -> use Elastica\QueryBuilder\DSL\Query::match() instead
      • Elastica\Transport\HttpAdapter -> use Elastica\Transport\Http instead
    • Removed deprecated methods #2135
      • Elastica\Aggregation\Range::setKeyedResponse() -> use Elastica\Aggregation\Range::setKeyed() instead
      • Elastica\Bulk::toString() -> use Elastica\Bulk::__toString() or cast to string instead
      • Elastica\Query\MatchQuery::setFieldCutoffFrequency()
      • Elastica\Query\MultiMatch::setCutoffFrequency()
      • Elastica\QueryBuilder\DSL\Aggregation::global_agg() -> use Elastica\QueryBuilder\DSL\Aggregation::global() instead
      • Elastica\Request::toString() -> use Elastica\Request::__toString() or cast to string instead
      • Elastica\Result::getType()
      • Elastica\Suggest\Phrase::addCandidateGenerator() -> use Elastica\Suggest\Phrase::addDirectGenerator() instead
      • Elastica\Util::getParamName()
    • Changed following aggregation constructors #2138
      • Elastica\Aggregation\AvgBucket: The second argument $bucketsPath is now mandatory
      • Elastica\Aggregation\BucketScript: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\BucketSelector: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\Derivative: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\NormalizeAggregation: The second (string $bucketsPath) and the third (string $method) argument are now mandatory
      • Elastica\Aggregation\PercentilesBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SerialDiff: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\StatsBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SumBucket: The second argument (string $bucketsPath) is now mandatory
    • Changed return type of Elastica\Cluster\Health::getActiveShardsPercentAsNumber() method to float #2144
    • Changed $origin and $scale parameter types of Elastica\Query\FunctionScore::addDecayFunction() to allow float|int|string #2144
    • Changed $key parameter type of Elastica\Multi\Search::addSearch() to allow int|string|null #2144
    • Changed $options parameter type of Elastica\Index::create() to only allow array<string, mixed> #2147
    • Changed Elastica\Reindex::setWaitForCompletion() to only allow bool #2151
    • Changed Elastica\Search::addIndex(), Elasica\Search::addIndices() and Elastica\Search::hasIndex() parameter type to only allow Elastica\Index #2150
    • Changed $options argument to not accept int in the following methods #2148
      • Elastica\SearchableInterface::search()
      • Elastica\SearchableInterface::createSearch()
      • Elastica\Search::search()
      • Elastica\Search::createSearch()
      • Elastica\Search::setOptionsAndQuery()
      • Elastica\Index::search()
      • Elastica\Index::createSearch()
    • Removed classes #2188
      • Elastica\Connection
      • Elastica\Connection\ConnectionPool
      • Elastica\Connection\Strategy\CallbackStrategy
      • Elastica\Connection\Strategy\RoundRobin
      • Elastica\Connection\Strategy\Simple
      • Elastica\Connection\Strategy\StrategyFactory
      • Elastica\Connection\Strategy\StrategyInterface
    • Removed Elastica\Client::setLogger() method #2148
    • Enabled strict_types on all classes #2190
    • Changed Elastica\Scroll:clear to use scroll_id body parameter instead of url parameter #2211
    • Remove branch alias for dev-master from composer file #2215

    Added

    • Added support for PHP 8.2 #2136
    • Added missing @throws annotations to Client::request and related methods #2152
    • Added ElasticSearch 8.x to CI #2123
    • Added more versions of ElasticSearch to CI #2155
    • If not expicitly set, use retry_on_conflict from Client configuration in Bulk updates (ported from 7.x #2184)
    • Added support for the Combined Fields query type #2195

    Changed

    • Updated php-cs-fixer to 3.13.2 #2143
    • Modernize code using match expression #2141
    • Updated docker/php/Dockerfile added AllowSymfonyFlexPlugin (false) on docker phpuser context #2194

    Removed

    • Removed the JSONParseException class, which is replaced by \JsonException
    • Removed the JSONParseException test class
    • Removed nyholm/dsn as no longer needed.
    • Removed symfony/deprecation-contracts as no longer needed.

    Fixed

    • Fix types order in Elastica\Query to work with psalm & expand the aggs type to include raw arrays

    New Contributors

    Full Changelog: 7.3.0...8.0.0

    Open source →
    Release notes

    This a major release with breaking changes. Have a look at the Upgrade guide.

    Backward Compatibility Breaks

    • Dropped support for PHP <8.0 #2131
    • Removed deprecated classes in 7.x #2132
      • Elastica\Exception\ElasticsearchException -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Exception\ResponseException::getElasticsearchException() -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Processor\Append -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Attachment -> use Elastica\Processor\AttachmentProcessor instead
      • Elastica\Processor\Convert -> use Elastica\Processor\ConvertProcessor instead
      • Elastica\Processor\Date -> use Elastica\Processor\DateProcessor instead
      • Elastica\Processor\DateIndexName -> use Elastica\Processor\DateIndexNameProcessor instead
      • Elastica\Processor\DotExpander -> use Elastica\Processor\DotExpanderProcessor instead
      • Elastica\Processor\Fail -> use Elastica\Processor\FailProcessor instead
      • Elastica\Processor\Join -> use Elastica\Processor\JoinProcessor instead
      • Elastica\Processor\Json -> use Elastica\Processor\JsonProcessor instead
      • Elastica\Processor\Kv -> use Elastica\Processor\KvProcessor instead
      • Elastica\Processor\Lowercase -> use Elastica\Processor\LowercaseProcessor instead
      • Elastica\Processor\Remove -> use Elastica\Processor\RemoveProcessor instead
      • Elastica\Processor\Rename -> use Elastica\Processor\RenameProcessor instead
      • Elastica\Processor\Set -> use Elastica\Processor\SetProcessor instead
      • Elastica\Processor\Sort -> use Elastica\Processor\SortProcessor instead
      • Elastica\Processor\Split -> use Elastica\Processor\SplitProcessor instead
      • Elastica\Processor\Trim -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Uppercase -> use Elastica\Processor\UppercaseProcessor instead
      • Elastica\Query\Common -> use Elastica\Query\MatchQuery instead
      • Elastica\QueryBuilder\DSL\Query::common_terms() -> use Elastica\QueryBuilder\DSL\Query::match() instead
      • Elastica\Transport\HttpAdapter -> use Elastica\Transport\Http instead
    • Removed deprecated methods #2135
      • Elastica\Aggregation\Range::setKeyedResponse() -> use Elastica\Aggregation\Range::setKeyed() instead
      • Elastica\Bulk::toString() -> use Elastica\Bulk::__toString() or cast to string instead
      • Elastica\Query\MatchQuery::setFieldCutoffFrequency()
      • Elastica\Query\MultiMatch::setCutoffFrequency()
      • Elastica\QueryBuilder\DSL\Aggregation::global_agg() -> use Elastica\QueryBuilder\DSL\Aggregation::global() instead
      • Elastica\Request::toString() -> use Elastica\Request::__toString() or cast to string instead
      • Elastica\Result::getType()
      • Elastica\Suggest\Phrase::addCandidateGenerator() -> use Elastica\Suggest\Phrase::addDirectGenerator() instead
      • Elastica\Util::getParamName()
    • Changed following aggregation constructors #2138
      • Elastica\Aggregation\AvgBucket: The second argument $bucketsPath is now mandatory
      • Elastica\Aggregation\BucketScript: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\BucketSelector: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\Derivative: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\NormalizeAggregation: The second (string $bucketsPath) and the third (string $method) argument are now mandatory
      • Elastica\Aggregation\PercentilesBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SerialDiff: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\StatsBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SumBucket: The second argument (string $bucketsPath) is now mandatory
    • Changed return type of Elastica\Cluster\Health::getActiveShardsPercentAsNumber() method to float #2144
    • Changed $origin and $scale parameter types of Elastica\Query\FunctionScore::addDecayFunction() to allow float|int|string #2144
    • Changed $key parameter type of Elastica\Multi\Search::addSearch() to allow int|string|null #2144
    • Changed $options parameter type of Elastica\Index::create() to only allow array<string, mixed> #2147
    • Changed Elastica\Reindex::setWaitForCompletion() to only allow bool #2151
    • Changed Elastica\Search::addIndex(), Elasica\Search::addIndices() and Elastica\Search::hasIndex() parameter type to only allow Elastica\Index #2150
    • Changed $options argument to not accept int in the following methods #2148
      • Elastica\SearchableInterface::search()
      • Elastica\SearchableInterface::createSearch()
      • Elastica\Search::search()
      • Elastica\Search::createSearch()
      • Elastica\Search::setOptionsAndQuery()
      • Elastica\Index::search()
      • Elastica\Index::createSearch()
    • Removed classes #2188
      • Elastica\Connection
      • Elastica\Connection\ConnectionPool
      • Elastica\Connection\Strategy\CallbackStrategy
      • Elastica\Connection\Strategy\RoundRobin
      • Elastica\Connection\Strategy\Simple
      • Elastica\Connection\Strategy\StrategyFactory
      • Elastica\Connection\Strategy\StrategyInterface
    • Removed Elastica\Client::setLogger() method #2148
    • Enabled strict_types on all classes #2190
    • Changed Elastica\Scroll:clear to use scroll_id body parameter instead of url parameter #2211
    • Remove branch alias for dev-master from composer file #2215

    Added

    • Added support for PHP 8.2 #2136
    • Added missing @throws annotations to Client::request and related methods #2152
    • Added ElasticSearch 8.x to CI #2123
    • Added more versions of ElasticSearch to CI #2155
    • If not expicitly set, use retry_on_conflict from Client configuration in Bulk updates (ported from 7.x #2184)
    • Added support for the Combined Fields query type #2195

    Changed

    • Updated php-cs-fixer to 3.13.2 #2143
    • Modernize code using match expression #2141
    • Updated docker/php/Dockerfile added AllowSymfonyFlexPlugin (false) on docker phpuser context #2194

    Removed

    • Removed the JSONParseException class, which is replaced by \JsonException
    • Removed the JSONParseException test class
    • Removed nyholm/dsn as no longer needed.
    • Removed symfony/deprecation-contracts as no longer needed.

    Fixed

    • Fix types order in Elastica\Query to work with psalm & expand the aggs type to include raw arrays
    Open source →
  5. 8.0.0-alpha1 03 May 2024 pre-release
    Release notes

    This is the first 8.0.0 alpha release for Elastica. It is compatible with Elasticsearch 8.0 and contains several breaking changes. We want to get this out in the wild to get as much feedback on it as we can. Any new issues found? Any migration issues? The work of getting us to GA is tracked here: #2185

    Big thanks to the community for getting us to this release!

    Changelog

    Backward Compatibility Breaks

    • Dropped support for PHP <8.0 #2131
    • Removed deprecated classes in 7.x #2132
      • Elastica\Exception\ElasticsearchException -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Exception\ResponseException::getElasticsearchException() -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Processor\Append -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Attachment -> use Elastica\Processor\AttachmentProcessor instead
      • Elastica\Processor\Convert -> use Elastica\Processor\ConvertProcessor instead
      • Elastica\Processor\Date -> use Elastica\Processor\DateProcessor instead
      • Elastica\Processor\DateIndexName -> use Elastica\Processor\DateIndexNameProcessor instead
      • Elastica\Processor\DotExpander -> use Elastica\Processor\DotExpanderProcessor instead
      • Elastica\Processor\Fail -> use Elastica\Processor\FailProcessor instead
      • Elastica\Processor\Join -> use Elastica\Processor\JoinProcessor instead
      • Elastica\Processor\Json -> use Elastica\Processor\JsonProcessor instead
      • Elastica\Processor\Kv -> use Elastica\Processor\KvProcessor instead
      • Elastica\Processor\Lowercase -> use Elastica\Processor\LowercaseProcessor instead
      • Elastica\Processor\Remove -> use Elastica\Processor\RemoveProcessor instead
      • Elastica\Processor\Rename -> use Elastica\Processor\RenameProcessor instead
      • Elastica\Processor\Set -> use Elastica\Processor\SetProcessor instead
      • Elastica\Processor\Sort -> use Elastica\Processor\SortProcessor instead
      • Elastica\Processor\Split -> use Elastica\Processor\SplitProcessor instead
      • Elastica\Processor\Trim -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Uppercase -> use Elastica\Processor\UppercaseProcessor instead
      • Elastica\Query\Common -> use Elastica\Query\MatchQuery instead
      • Elastica\QueryBuilder\DSL\Query::common_terms() -> use Elastica\QueryBuilder\DSL\Query::match() instead
      • Elastica\Transport\HttpAdapter -> use Elastica\Transport\Http instead
    • Removed deprecated methods #2135
      • Elastica\Aggregation\Range::setKeyedResponse() -> use Elastica\Aggregation\Range::setKeyed() instead
      • Elastica\Bulk::toString() -> use Elastica\Bulk::__toString() or cast to string instead
      • Elastica\Query\MatchQuery::setFieldCutoffFrequency()
      • Elastica\Query\MultiMatch::setCutoffFrequency()
      • Elastica\QueryBuilder\DSL\Aggregation::global_agg() -> use Elastica\QueryBuilder\DSL\Aggregation::global() instead
      • Elastica\Request::toString() -> use Elastica\Request::__toString() or cast to string instead
      • Elastica\Result::getType()
      • Elastica\Suggest\Phrase::addCandidateGenerator() -> use Elastica\Suggest\Phrase::addDirectGenerator() instead
      • Elastica\Util::getParamName()
    • Changed following aggregation constructors #2138
      • Elastica\Aggregation\AvgBucket: The second argument $bucketsPath is now mandatory
      • Elastica\Aggregation\BucketScript: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\BucketSelector: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\Derivative: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\NormalizeAggregation: The second (string $bucketsPath) and the third (string $method) argument are now mandatory
      • Elastica\Aggregation\PercentilesBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SerialDiff: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\StatsBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SumBucket: The second argument (string $bucketsPath) is now mandatory
    • Changed return type of Elastica\Cluster\Health::getActiveShardsPercentAsNumber() method to float #2144
    • Changed $origin and $scale parameter types of Elastica\Query\FunctionScore::addDecayFunction() to allow float|int|string #2144
    • Changed $key parameter type of Elastica\Multi\Search::addSearch() to allow int|string|null #2144
    • Changed $options parameter type of Elastica\Index::create() to only allow array<string, mixed> #2147
    • Changed Elastica\Reindex::setWaitForCompletion() to only allow bool #2151
    • Changed Elastica\Search::addIndex(), Elasica\Search::addIndices() and Elastica\Search::hasIndex() parameter type to only allow Elastica\Index #2150
    • Changed $options argument to not accept int in the following methods #2148
      • Elastica\SearchableInterface::search()
      • Elastica\SearchableInterface::createSearch()
      • Elastica\Search::search()
      • Elastica\Search::createSearch()
      • Elastica\Search::setOptionsAndQuery()
      • Elastica\Index::search()
      • Elastica\Index::createSearch()
    • Removed classes #2188
      • Elastica\Connection
      • Elastica\Connection\ConnectionPool
      • Elastica\Connection\Strategy\CallbackStrategy
      • Elastica\Connection\Strategy\RoundRobin
      • Elastica\Connection\Strategy\Simple
      • Elastica\Connection\Strategy\StrategyFactory
      • Elastica\Connection\Strategy\StrategyInterface
    • Removed Elastica\Client::setLogger() method #2148
    • Enabled strict_types on all classes #2190
    • Changed Elastica\Scroll:clear to use scroll_id body parameter instead of url parameter #2211

    Added

    • Added support for PHP 8.2 #2136
    • Added missing @throws annotations to Client::request and related methods #2152
    • Added ElasticSearch 8.x to CI #2123
    • Added more versions of ElasticSearch to CI #2155
    • If not expicitly set, use retry_on_conflict from Client configuration in Bulk updates (ported from 7.x #2184)
    • Added support for the Combined Fields query type #2195

    Changed

    • Updated php-cs-fixer to 3.13.2 #2143
    • Modernize code using match expression #2141
    • Updated docker/php/Dockerfile added AllowSymfonyFlexPlugin (false) on docker phpuser context #2194

    Removed

    • Removed the JSONParseException class, which is replaced by \JsonException
    • Removed the JSONParseException test class
    • Removed nyholm/dsn as no longer needed.
    • Removed symfony/deprecation-contracts as no longer needed.

    Fixed

    • Fix types order in Elastica\Query to work with psalm & expand the aggs type to include raw arrays

    New Contributors

    Full Changelog: 7.3.2...8.0.0-alpha1

    Open source →
    Release notes

    Backward Compatibility Breaks

    • Dropped support for PHP <8.0 #2131
    • Removed deprecated classes in 7.x #2132
      • Elastica\Exception\ElasticsearchException -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Exception\ResponseException::getElasticsearchException() -> use Elastica\Exception\ResponseException::getResponse()::getFullError() instead
      • Elastica\Processor\Append -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Attachment -> use Elastica\Processor\AttachmentProcessor instead
      • Elastica\Processor\Convert -> use Elastica\Processor\ConvertProcessor instead
      • Elastica\Processor\Date -> use Elastica\Processor\DateProcessor instead
      • Elastica\Processor\DateIndexName -> use Elastica\Processor\DateIndexNameProcessor instead
      • Elastica\Processor\DotExpander -> use Elastica\Processor\DotExpanderProcessor instead
      • Elastica\Processor\Fail -> use Elastica\Processor\FailProcessor instead
      • Elastica\Processor\Join -> use Elastica\Processor\JoinProcessor instead
      • Elastica\Processor\Json -> use Elastica\Processor\JsonProcessor instead
      • Elastica\Processor\Kv -> use Elastica\Processor\KvProcessor instead
      • Elastica\Processor\Lowercase -> use Elastica\Processor\LowercaseProcessor instead
      • Elastica\Processor\Remove -> use Elastica\Processor\RemoveProcessor instead
      • Elastica\Processor\Rename -> use Elastica\Processor\RenameProcessor instead
      • Elastica\Processor\Set -> use Elastica\Processor\SetProcessor instead
      • Elastica\Processor\Sort -> use Elastica\Processor\SortProcessor instead
      • Elastica\Processor\Split -> use Elastica\Processor\SplitProcessor instead
      • Elastica\Processor\Trim -> use Elastica\Processor\AppendProcessor instead
      • Elastica\Processor\Uppercase -> use Elastica\Processor\UppercaseProcessor instead
      • Elastica\Query\Common -> use Elastica\Query\MatchQuery instead
      • Elastica\QueryBuilder\DSL\Query::common_terms() -> use Elastica\QueryBuilder\DSL\Query::match() instead
      • Elastica\Transport\HttpAdapter -> use Elastica\Transport\Http instead
    • Removed deprecated methods #2135
      • Elastica\Aggregation\Range::setKeyedResponse() -> use Elastica\Aggregation\Range::setKeyed() instead
      • Elastica\Bulk::toString() -> use Elastica\Bulk::__toString() or cast to string instead
      • Elastica\Query\MatchQuery::setFieldCutoffFrequency()
      • Elastica\Query\MultiMatch::setCutoffFrequency()
      • Elastica\QueryBuilder\DSL\Aggregation::global_agg() -> use Elastica\QueryBuilder\DSL\Aggregation::global() instead
      • Elastica\Request::toString() -> use Elastica\Request::__toString() or cast to string instead
      • Elastica\Result::getType()
      • Elastica\Suggest\Phrase::addCandidateGenerator() -> use Elastica\Suggest\Phrase::addDirectGenerator() instead
      • Elastica\Util::getParamName()
    • Changed following aggregation constructors #2138
      • Elastica\Aggregation\AvgBucket: The second argument $bucketsPath is now mandatory
      • Elastica\Aggregation\BucketScript: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\BucketSelector: The second (array $bucketsPath) and the third (string $script) argument are now mandatory
      • Elastica\Aggregation\Derivative: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\NormalizeAggregation: The second (string $bucketsPath) and the third (string $method) argument are now mandatory
      • Elastica\Aggregation\PercentilesBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SerialDiff: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\StatsBucket: The second argument (string $bucketsPath) is now mandatory
      • Elastica\Aggregation\SumBucket: The second argument (string $bucketsPath) is now mandatory
    • Changed return type of Elastica\Cluster\Health::getActiveShardsPercentAsNumber() method to float #2144
    • Changed $origin and $scale parameter types of Elastica\Query\FunctionScore::addDecayFunction() to allow float|int|string #2144
    • Changed $key parameter type of Elastica\Multi\Search::addSearch() to allow int|string|null #2144
    • Changed $options parameter type of Elastica\Index::create() to only allow array<string, mixed> #2147
    • Changed Elastica\Reindex::setWaitForCompletion() to only allow bool #2151
    • Changed Elastica\Search::addIndex(), Elasica\Search::addIndices() and Elastica\Search::hasIndex() parameter type to only allow Elastica\Index #2150
    • Changed $options argument to not accept int in the following methods #2148
      • Elastica\SearchableInterface::search()
      • Elastica\SearchableInterface::createSearch()
      • Elastica\Search::search()
      • Elastica\Search::createSearch()
      • Elastica\Search::setOptionsAndQuery()
      • Elastica\Index::search()
      • Elastica\Index::createSearch()
    • Removed classes #2188
      • Elastica\Connection
      • Elastica\Connection\ConnectionPool
      • Elastica\Connection\Strategy\CallbackStrategy
      • Elastica\Connection\Strategy\RoundRobin
      • Elastica\Connection\Strategy\Simple
      • Elastica\Connection\Strategy\StrategyFactory
      • Elastica\Connection\Strategy\StrategyInterface
    • Removed Elastica\Client::setLogger() method #2148
    • Enabled strict_types on all classes #2190
    • Changed Elastica\Scroll:clear to use scroll_id body parameter instead of url parameter #2211

    Added

    • Added support for PHP 8.2 #2136
    • Added missing @throws annotations to Client::request and related methods #2152
    • Added ElasticSearch 8.x to CI #2123
    • Added more versions of ElasticSearch to CI #2155
    • If not expicitly set, use retry_on_conflict from Client configuration in Bulk updates (ported from 7.x #2184)
    • Added support for the Combined Fields query type #2195

    Changed

    • Updated php-cs-fixer to 3.13.2 #2143
    • Modernize code using match expression #2141
    • Updated docker/php/Dockerfile added AllowSymfonyFlexPlugin (false) on docker phpuser context #2194

    Removed

    • Removed the JSONParseException class, which is replaced by \JsonException
    • Removed the JSONParseException test class
    • Removed nyholm/dsn as no longer needed.
    • Removed symfony/deprecation-contracts as no longer needed.

    Fixed

    • Fix types order in Elastica\Query to work with psalm & expand the aggs type to include raw arrays
    Open source →
  6. 7.3.2 11 Mar 2024
    Release notes

    What's Changed

    Full Changelog: 7.3.1...7.3.2

    Open source →
  7. 7.3.1 21 Apr 2023
    Release notes

    Added

    • Added missing @throws annotations to Client::request and related methods #2153

    Deprecated

    • Deprecated not passing a buckets_path and script when constructing Elastica\Aggregation\BucketScript and Elastica\Aggregation\BucketSelector

    Fixed

    • Fix types order in Elastica\Query to work with psalm & expand the aggs type to include raw arrays
    Open source →
  8. 7.3.0 30 Nov 2022
    Release notes

    Changed

    • Use ramsey/composer-install to simplify CI jobs and test with the lowest set of dependencies #2113
    • Bumped elasticsearch/elasticsearch to 7.10 to be able to use OpenPointInTime class #2113
    • Updated php-cs-fixer to 3.9.5 #2110
    • Changed Elastica\Index\Settings::get adding ability to get default settings by @krasilnikovm #2115
    • Update AWSAuthV4 transport to sanitize host name for AWS requests before signing #2090
    • New method Elastica\Aggregation\Terms::setMissingBucket. For Composite Agg. Include in the response documents without a value for a given source. #2117
    • Increased PHPStan level to 5 by @franmomu #2108

    Removed

    • Removed CallbackStrategyTestHelper and ErrorsCollector from tests #2111

    Fixed

    • Fixed Query/Terms terms phpdoc from array<bool|float|int|string> to list<bool|float|int|string> #2118
    • Fixed Response to prevent throwing JSONParseException when the response is empty.

    New Contributors

    Full Changelog: 7.2.0...7.3.0

    Open source →
    Release notes

    Changed

    • Use ramsey/composer-install to simplify CI jobs and test with the lowest set of dependencies #2113
    • Bumped elasticsearch/elasticsearch to 7.10 to be able to use OpenPointInTime class #2113
    • Updated php-cs-fixer to 3.9.5 #2110
    • Changed Elastica\Index\Settings::get adding ability to get default settings by @krasilnikovm #2115
    • Update AWSAuthV4 transport to sanitize host name for AWS requests before signing #2090
    • New method Elastica\Aggregation\Terms::setMissingBucket. For Composite Agg. Include in the response documents without a value for a given source. #2117
    • Increased PHPStan level to 5 by @franmomu #2108

    Removed

    • Removed CallbackStrategyTestHelper and ErrorsCollector from tests #2111

    Fixed

    • Fixed Query/Terms terms phpdoc from array<bool|float|int|string> to list<bool|float|int|string> #2118
    • Fixed Response to prevent throwing JSONParseException when the response is empty.
    Open source →
  9. 7.2.0 02 Aug 2022
    Release notes

    Backward Compatibility Breaks

    • Changed SetProcessor::setValue signature to allow to pass any type, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2082
    • Changed Settings::setMergePolicy signature to allow to pass int and string as argument 2, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2085

    Added

    Changed

    • Updated symfony/phpunit-bridge to 6.0 by @franmomu #2067
    • Updated php-cs-fixer to 3.8.0 #2074
    • Updated composer-normalize to 2.2.28 by @deguif #2084
    • Increased PHPStan level to 4 #2080
    • ExceptionInterface extends Throwable #2083
    • Changed value in SetProcessor to accept mixed instead of string by @franmomu #2082
    • Updated Query::create PHPDoc to include supported types and propagate it to callers by @franmomu #2088
    • Update some iterable types in PHPDoc to be more specific by @franmomu #2092
    • Updated AwsAuthV4Test adding assertions for exception type by @franmomu #2094

    Deprecated

    • Deprecated Elastica\Reindex::WAIT_FOR_COMPLETION_FALSE, use a boolean as parameter instead by @franmomu #2070
    • Passing anything else than a boolean as 1st argument to Reindex::setWaitForCompletion, pass a boolean instead by @franmomu #2070
    • Deprecated passing a string as 1st argument to Search::addIndex() and Search::hasIndex(), pass an Index instance instead by @franmomu #2103
    • Deprecated passing an array of string as 1st argument to Search::addIndices(), use an array of Index instances by @franmomu #2103

    Removed

    • Removed egeloen/http-adapter as suggested package since the project is abandoned by @franmomu #2069
    • Removed 0 as valid request data using Analyze API by @franmomu #2068
    • Removed dead code in AwsAuthV4Test by @franmomu #2073

    Fixed

    • Fixed some PHPDoc types adding null as possible value by @franmomu #2070 and #2087
    • Fixed passing wrong types to GapPolicyInterface::setGapPolicy(), Document::setDocAsUpsert() and Connection::setPort() methods by @franmomu #2081
    • Fixed Http PHPDoc adding \CurlHandle type for Curl connection by @franmomu #2086
    • Fixed case mismatch in method calls by @franmomu #2087
    • Fixed MoreLikeThis::setLike() PHPDoc allowing Document by @franmomu #2091
    • Fixed Term::setTerm() PHPDoc allowing scalar values for $value parameter by @franmomu #2094
    • Fixed DateHistogram deprecation: use fixed_internal or calendar_interval instead of interval by @VincentLanglet #2099

    New Contributors

    Full Changelog: 7.1.5...7.2.0

    Open source →
    Release notes

    Backward Compatibility Breaks

    • Changed SetProcessor::setValue signature to allow to pass any type, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2082
    • Changed Settings::setMergePolicy signature to allow to pass int and string as argument 2, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2085

    Added

    • Added PHPStan at level 3 by @franmomu #2064
    • Added coverage check to CI by @franmomu #2071
    • Added string as a valid type for data in Request by @franmomu #2078
    • Added missing throws PHPDoc tags by @franmomu #2077
    • Added Search::addIndexByName(), Search::hasIndexByName() and Search::addIndicesByName() by @franmomu #2103

    Changed

    • Updated symfony/phpunit-bridge to 6.0 by @franmomu #2067
    • Updated php-cs-fixer to 3.8.0 #2074
    • Updated composer-normalize to 2.2.28 by @deguif #2084
    • Increased PHPStan level to 4 #2080
    • ExceptionInterface extends Throwable #2083
    • Changed value in SetProcessor to accept mixed instead of string by @franmomu #2082
    • Updated Query::create PHPDoc to include supported types and propagate it to callers by @franmomu #2088
    • Update some iterable types in PHPDoc to be more specific by @franmomu #2092
    • Updated AwsAuthV4Test adding assertions for exception type by @franmomu #2094

    Deprecated

    • Deprecated Elastica\Reindex::WAIT_FOR_COMPLETION_FALSE, use a boolean as parameter instead by @franmomu #2070
    • Passing anything else than a boolean as 1st argument to Reindex::setWaitForCompletion, pass a boolean instead by @franmomu #2070
    • Deprecated passing a string as 1st argument to Search::addIndex() and Search::hasIndex(), pass an Index instance instead by @franmomu #2103
    • Deprecated passing an array of string as 1st argument to Search::addIndices(), use an array of Index instances by @franmomu #2103

    Removed

    • Removed egeloen/http-adapter as suggested package since the project is abandoned by @franmomu #2069
    • Removed 0 as valid request data using Analyze API by @franmomu #2068
    • Removed dead code in AwsAuthV4Test by @franmomu #2073

    Fixed

    • Fixed some PHPDoc types adding null as possible value by @franmomu #2070 and #2087
    • Fixed passing wrong types to GapPolicyInterface::setGapPolicy(), Document::setDocAsUpsert() and Connection::setPort() methods by @franmomu #2081
    • Fixed Http PHPDoc adding \CurlHandle type for Curl connection by @franmomu #2086
    • Fixed case mismatch in method calls by @franmomu #2087
    • Fixed MoreLikeThis::setLike() PHPDoc allowing Document by @franmomu #2091
    • Fixed Term::setTerm() PHPDoc allowing scalar values for $value parameter by @franmomu #2094
    • Fixed DateHistogram deprecation: use fixed_interval or calendar_interval instead of interval by @VincentLanglet #2099
    Open source →
  10. 7.1.5 29 Mar 2022
    Release notes

    Added

    • Added explicit return annotation to Elastica\Multi\ResultSet::current() and Elastica\Multi\ResultSet::offsetGet() by @franmomu 2056
    • Add throwing \Elastica\Exception\RequestEntityTooLargeException on HTTP-413 responses in \Elastica\Bulk by @Vetaxon 2055
    Open source →
  11. 7.1.4 14 Feb 2022
    Release notes

    Added

    • Added support for symfony/deprecation-contracts 3.0 by @rguennichi #2047
    • Added aggregation auto_date_histogram @andriinavrotskii #2051

    Fixed

    • Fixed version parameters for DeleteDocument by @pheyse24 #2048
    • Fixed version parameters for Index::addDocument() by @pidera #2050
    Open source →
  12. 7.1.3 09 Dec 2021
    Release notes

    Added

    • Added support for scripted upsert on bulk requests by @dsgrillo #1974
    • Added Elastica\Aggregation\CumulativeSum by @limenet #1987
    • Added ignore_failure option to suitable ingest processors by @deguif #2003
    • Added ignore_missing option to lowercase, remove, trim and uppercase processors by @deguif #2001
    • Added allow_duplicates option to append processor by @deguif #2004
    • Added bytes processor by @deguif #2008
    • Added indices_boost option to Elastica\Query by @deguif #2018
    • Added Elastica\Query\Terms::setBoost() method to configure boost by @deguif #2035
    • Added Elastica\Query\TermsSet query by @mamchyts #2020
    • Added terms_set in query builder by @deguif #2036
    • Added Elastica\Aggregation\Traits\BucketsPathTrait to configure buckets_path on aggregations by @deguif #2037 #2039
    • Allowed to configure a sub key when adding a param with Elastica\Param::addParam() by @deguif #2030

    Changed

    • Triggered deprecation in Elastica\Result::getType() method by @deguif #2016
    • Updated php-cs-fixer to 3.3.2 by @deguif #2022
    • Updated composer-normalize to 2.15.0 by @deguif #2021
    • Updated elasticsearch test version to 7.15.2 by @deguif #2027
    • Extracted setting gap policy to \Elastica\Aggregation\Traits\GapPolicyTrait and introduced \Elastica\Aggregation\GapPolicyInterface with constants for options by @stchr #2023
    • Extracted setting field to Elastica\Processor\Traits\FieldTrait by @deguif #2024
    • Extracted setting target_field to Elastica\Processor\Traits\TargetFieldTrait by @deguif #2026
    • Simplified github action matrix for continuous integration workflow by @deguif #2025

    Deprecated

    • Deprecated Elastica\Query\Common class, use Elastica\Query\MatchQuery instead by @deguif #2013
    • Deprecated Elastica\QueryBuilder\DSL\Query::common_terms(), use match() instead by @deguif #2013
    • Deprecated passing an int as 1st argument to Elastica\Search::setOptionsAndQuery(), pass an array with the key size instead by @deguif #2010
    • Deprecated cutoff_frequency option of Elastica\Query\MatchQuery by @deguif #2014
    • Deprecated cutoff_frequency option of Elastica\Query\MultiMatch by @deguif #2015
    • Deprecated Elastica\Bulk::toString(), Elastica\Bulk\Action::toString() and Elastica\Request::toString() methods, use __toString() method or cast to string instead by @deguif #2033
    • Deprecated not passing a buckets_path when constructing Elastica\Aggregation\AvgBucket, Elastica\Aggregation\Derivative, Elastica\Aggregation\NormalizeAggregation, Elastica\Aggregation\PercentilesBucket, Elastica\Aggregation\SerialDiff, Elastica\Aggregation\StatsBucket and Elastica\Aggregation\SumBucket by @deguif #2038
    • Deprecated not passing a method when constructing Elastica\Aggregation\NormalizeAggregation by @deguif #2040

    Removed

    • Removed remaining _type field usages by @deguif #2017
    • Removed Elastica\Bulk::$_type dead property by @deguif #2034
    • Removed Elasticsearch old version checks in tests by @deguif #2041

    Fixed

    • Fixed type-hint for Elastica\Search::setOptionsAndQuery() by @deguif #2009
    • Fixed terms query params resolution by @deguif #2032
    Open source →
  13. 7.1.2 21 Oct 2021
    Release notes

    Backward Compatibility Breaks

    • Changed Elastica\Exception\JSONParseException inheritance, it now extends \JsonException instead of \RuntimeException #1949

    Added

    • Added Elastica\Aggregation\NormalizeAggregation #1956
    • Added Elastica\Suggest\Phrase::addDirectGenerator to align with ES specification #1964
    • Added support for psr/log 2.0 and 3.0 #1971
    • Added new optional 'case_insensitive' option to Elastica\Query\Wildcard #1894
    • Added Elastica\Result::getSort() fetching the "sort" property of results #1979
    • Added exposure of Point-In-Time ID for search responses in Elastica\ResultSet::getPointInTimeId() #1991
    • Added Elastica\Index::openPointInTime() for opening a PiT on the index #1994
    • Added possibility to specify PointInTime on Elastica\Query::setPointInTime() #1992
    • Added Elastica\Client::closePointInTime() for closing a PiT #1995

    Changed

    • Updated php-cs-fixer to 3.2.1 #1996 #1959 #1955
    • Using default Elasticsearch images for testing instead of OSS https://github.com/ruflin/Elastica/pull/1954

    Fixed

    • Fixed compatibility with guzzlehttp/psr7 version 2.x #2002
    • Fixed the assignment of version, seq_no and primary_term on getDocument #1973
    Open source →
  14. 7.1.1 24 Mar 2021
    Release notes

    Backward Compatibility Breaks

    • Changed Elastica\Query\MatchQuery::setFieldParam() signature to allow passing bool, float or int #1941
    • Changed Elastica\Query\MatchPhraseQuery::setFieldParam() signature to allow passing bool, float or int #1944

    Added

    • Excluded docker directory in .gitattributes #1938

    Changed

    • Included Content-Type HTTP header every time, whatever the content of the body is #1780
    • Changed Elastica\Status::indexExists(), Elastica\Status::aliasExists() and Elastica\Status::getIndicesWithAlias() signatures #1929
    • Replaced call_user_func() and call_user_func_array() by direct calls #1923
    • Replaced legacy constant CURLINFO_HTTP_CODE by CURLINFO_RESPONSE_CODE #1931
    • Updated php-cs-fixer to 2.18.3 #1915
    • Updated composer-normalize to 2.13.3 #1927

    Deprecated

    • Deprecated Elastica\Transport\HttpAdapter class #1940
    • Deprecated Elastica\Exception\JSONParseException exception, catch \JsonException instead #1949

    Fixed

    • Fixed wrong ltrim usage in guzzle transport #1783
    • Fixed _seq_no and _primary_term wrong initialization #1920
    • Fixed Elastica\Connection\StrategyInterface instance checks #1921
    • Fixed various PHPDoc annotations #1922
    • Fixed numeric index names are returned as int in Elastica\Status::getIndexNames() #1928
    • Fixed using raw array in post_filter #1950
    Open source →
  15. 7.1.0 15 Feb 2021
    Release notes

    Backward Compatibility Breaks

    • Added a default value to Elastica\Aggregation\Range::setKeyed() and Elastica\Aggregation\PercentilesBucket::setKeyed() #1876
    • Removed type-hint to Elastica\Aggregation\Percentiles::setMissing() argument #1875
    • Allowed the Terms query to accept an array of bool, float, int and/or string #1872

    Added

    • Added auth_type parameter in the client class config to specify the type of authentication (allowed values are basic, digest, gssnegotiate, ntlm) #1790
    • Added if_seq_no / if_primary_term to replace version for optimistic concurrency control #1803
    • Added Elastica\Aggregation\PercentilesBucket aggregation #1806
    • Added weighted_avg to aggregations DSL #1814
    • Added support for defining a connection pool with DSN. Example: pool(http://127.0.0.1 http://127.0.0.2/bar?timeout=4) #1808
    • Added Elastica\Aggregation\Composite aggregation #1804
    • Added symfony/deprecation-contracts package to handle deprecations #1823
    • Added list_syntax CS rule #1854
    • Added native_constant_invocation CS rule #1833
    • Added static_lambda CS rule #1870
    • Added Elastica\Aggregation\DateRange::setTimezone() #1847
    • Added endpoint options support to Elastica\Index::create() #1859
    • Added Elastica\Aggregation\DateHistogram::setKeyed() #1876
    • Added Elastica\Aggregation\GeoDistance::setKeyed() #1876
    • Added Elastica\Aggregation\Histogram::setKeyed() #1876
    • Added Elastica\Aggregation\IpRange::setKeyed() #1876
    • Added Elastica\Aggregation\GeotileGridAggregation #1880
    • Added Elastica\Aggregation\Avg::setMissing(), Elastica\Aggregation\Cardinality::setMissing(), Elastica\Aggregation\DateRange::setMissing(), Elastica\Aggregation\DateHistogram::setMissing(), Elastica\Aggregation\ExtendedStats::setMissing(), Elastica\Aggregation\Histogram::setMissing(), Elastica\Aggregation\Max::setMissing(), Elastica\Aggregation\Min::setMissing(), Elastica\Aggregation\Stats::setMissing(), Elastica\Aggregation\Sum::setMissing(), Elastica\Aggregation\Terms::setMissing() #1876
    • Supported guzzlehttp/guzzle 7.x #1816
    • Supported PHP 8.0 #1794
    • Supported BC break on elasticsearch/elasticsearch version 7.4.0 #1864

    Changed

    • Allowed string such as wait_for to be passed to AbstractUpdateAction::setRefresh #1791
    • Allowed float values for connection timeout and connection connect-timeout, providing ms precision for those. Previous precision was second. #1868
    • Changed the return type of AbstractUpdateAction::getRefresh to boolean|string #1791
    • Reviewed options handling in Elastica\Index::create() #1822
    • Replaced deprecated exceptions request option by http_errors request option in Guzzle transport #1817
    • Run coding styles check on github action #1878
    • Run unit tests on github action #1882
    • Run functional tests on github action #1885
    • Updated php-cs-fixer to 2.16.4 #1830
    • Updated php-cs-fixer to 2.16.7 #1881
    • Updated php-cs-fixer to 2.17.3 #1895
    • Updated php-cs-fixer to 2.18.2 #1897
    • Used GuzzleHttp\RequestOptions constants for configuring request options #1820
    • Used new alias endpoints classes #1839
    • Used new cache endpoints classes #1840
    • Used new ingest pipeline endpoints classes #1834
    • Used new mapping endpoints classes #1845
    • Used new nodes endpoints classes #1863
    • Used new settings endpoints classes #1852

    Deprecated

    • Deprecated Elastica\Aggregation\Range::setKeyedResponse(), use setKeyed() instead #1848
    • Deprecated Elastica\Exception\ResponseException::getElasticsearchException(), use getResponse()::getFullError() instead #1829
    • Deprecated Elastica\QueryBuilder\DSL\Aggregation::global_agg(), use global() instead #1826
    • Deprecated Elastica\Util::getParamName() #1832
    • Deprecated all Processor class names in favor of suffixed class names #1893
    • Deprecated Match query class and introduced MatchQuery instead for PHP 8.0 compatibility reason #1799
    • Deprecated version/version_type options (deprecated in 6.7.0) and added if_seq_no / if_primary_term that replaced it
    • Deprecated passing bool or null as 2nd argument to Elastica\Index::create() #1828

    Removed

    • Removed HHVM proxy detection #1818

    Fixed

    • Fixed issue 1789
    • Fixed type-hint for Elastica\QueryBuilder\DSL\Aggregation::sampler() not consistent with the underlying constructor call #1815
    • Fixed Elastica\Util::toSnakeCase() with first letter being lower cased #1831
    • Fixed handling precision as string in Elastica\Aggregation\GeohashGrid::setPrecision() #1884
    • Fixed calling Elastica\Aggregation\Composite::addAfter() with the null value 1877
    • Replaced _routing and _retry_on_conflict by routing and retry_on_conflict in AbstractUpdateAction #1807
    Open source →
  16. 7.0.0 10 Jun 2020
    Release notes

    Added

    • Added Elastica\Aggregation\WeightedAvg aggregation #1770

    Changed

    • Added missing Response information to Bulk/ResponseSet #1776
    Open source →
  17. 7.0.0-beta2 10 Dec 2019 pre-release
    Release notes

    Backward Compatibility Breaks

    • The method Index::deleteById() does not throw an NotFoundException when deleting a non-existing document #1732
    • The class \Elastica\QueryBuilder\Version\Version240 has been moved to \Elastica\QueryBuilder\Version\Version700 #1693
    • Dropped support for PHP 7.1 #1703

    Bugfixes

    • Renamed \Elastica\Suggest\Term deprecated option prefix_len to prefix_length #1707
    • The \Elastica\Query\GeoPolygon::count() method now returns the count of points passed to the filter #1696
    • Fix issue in \Elastica\Client::request() which causes request data to not be sent to the logger #1682

    Added

    • Added geo_bounding_box, geo_polygon, match_phrase, match_phrase_prefix, match_none to \Elastica\QueryBuilder\Version\Version700 #1702
    • Added \Elastica\ResultSet::getTotalHitsRelation() to get relation for total hits #1694
    • Added Sampler aggregation #1688

    Improvements

    • Launched tests with PHP 7.4 #1704
    • Launched local tests with PHP 7.2 by default #1725
    • Added nullable_type_declaration_for_default_null_value, no_alias_functions CS rules #1706
    • Configured visibility_required CS rule for constants #1723
    • Added Collapse DSL to QueryBuilder #1724
    Open source →
  18. 7.0.0-beta1 31 Oct 2019 pre-release
    Release notes

    Backward Compatibility Breaks

    • The class \Elastica\Type\Mapping has been moved to \Elastica\Mapping #1666
    • 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 from Elastica\Search class #1666
    • Removed type handling from Elastica\Bulk and Elastica\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() and Elastica\Search->count() use request method POST by default. Same for Elastica\Index, Elastica\Type\AbstractType, Elastica\Type.
    • Elastica\Client $_config field is now a ClientConfiguration instead of an array
    • Removed \Elastica\Client::_log, \Elastica\Log and the log configuration option. Use the Psr\Log\LoggerInterface $logger client argument to customize logging.
    • Changed all factory methods to make use of late static bindings by using static instead of self 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() and Elastica\SearchableInterface->count(). Same for Elastica\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 in Client constructor. #1659
    • Added setTrackTotalHits method to Elastica\Query#1663
    • Allow metadata to be set on Aggregations (via AbstractAggregation::setMeta(array)). #1677

    Improvements

    • Added native_function_invocation CS rule #1606
    • Elasticsearch test version changed from 6.5.2 to 6.6.1 #1620
    • Clear scroll context also when empty page was received #1660
    Open source →
  19. 7.0.0-beta.4 23 Mar 2020 pre-release
    Release notes

    Backward Compatibility Breaks

    • If you're NOT using composer to manage your libraries: the root directory of the library's source code moved from lib/Elastica/ to src/.
    • The Wildcard::setValue() changed its signature: use it to set the value of the wildcard query only.
    • The Wildcard Query's constructor now requires the name and value properties.
    • The Terms Query's constructor now requires the field and terms properties.

    Added

    • Added AbstractTermsAggregation::setIncludeAsExactMatch() #1766
    • Added AbstractTermsAggregation::setExcludeAsExactMatch() #1766
    • Added AbstractTermsAggregation::setIncludeWithPartitions() #1766
    • Added Elastica\Reindex->setPipeline(Elastica\Pipeline $pipeline): void. The link between the reindex and the pipeline is solved when run() is called, and thus the pipeline given doesn't need to be created before calling setPipeline() #1752
    • Added Elastica\Reindex->setRefresh(string $value): void. It accepts REFRESH_* constants from its class #1752 and #1758
    • Added Elastica\Reindex->setQuery(Elastica\Query\AbstractQuery $query): void #1752
    • Added constants PIPELINE, REFRESH_TRUE, REFRESH_FALSE, REFRESH_WAIT_FOR, SLICES and SLICES_AUTO to Elastica\Reindex #1752
    • Added Elastica\Pipeline->getId(): ?string #1752
    • Added Elastica\Aggregation\ExtendedStatsBucket aggregation #1756

    Changed

    • Changed Terms::setTerms() signature: it now accepts a list of strings only #1765
    • Changed Terms::setTermsLookup() signature: index, path and id are now required arguments #1765
    • Changed Wildcard::setValue() and constructor's signature: added more specific Wildcard::setBoost() and Wildcard::setRewrite methods
    • Updated PHP coding standards to adhere to PSR-12 #1760
    • Updated to PHPUnit v8.5 #1759
    • Refactored code structure: use src/ and tests/ folders #1755
    • Require elastica-php library >= v7.1.1, fixes an issue on Ingestion/Put() type-hinting
    • Require guzzle >= v6.3 as development library: fixes issues on PHP >= 7.2
    • Require phpunit >= v7.5, fixes deprecations in with PHP 7.3
    • Scroll is now throwing an exception when calling current() on an invalid iteration: always call valid() before accessing the current item, as documented in PHP's Iterator documentation #1749

    Removed

    • Removed unsupported flags from AbstractTermsAggregation::setInclude() #1766
    • Removed unsupported flags from AbstractTermsAggregation::setExclude() #1766
    • Terms::setMinimumMatch() has been removed as not supported by ES 7.x
    Open source →
  20. 7.0.0-beta.3 16 Jan 2020 pre-release
    Release notes
    • Marked Elastica 5.x as unmaintained

    Bugfixes

    • Fix Search::count() not counting all results #1746
    • Fixed handling of Search::OPTION_SEARCH_IGNORE_UNAVAILABLE inside Scroll object

    Added

    • Added DiversifiedSampler aggregation #1735
    • Added \Elastica\Query\DistanceFeature #1730
    • Added support for injecting a callable AWS credential provider to use static, cached, or custom-sourced credentials #1667

    Improvements

    • Scroll releases previous ResultSet from memory before calling ES for next data batch #1740
    Open source →
  21. 6.2.1 14 Apr 2022
    Release notes

    Improvements

    • Solve PHP 8.1 deprecations for every class implementing Countable, Iterator or ArrayAccess by @VincentLanglet #2061

    Full Changelog: 6.2.0...6.2.1

    Open source →
  22. 6.2.0 08 Oct 2021

    Nothing published for this version

  23. 6.1.5 24 Mar 2021

    Nothing published for this version

  24. 6.1.4 17 Mar 2021

    Nothing published for this version

  25. 6.1.3 17 Feb 2021

    Nothing published for this version

  26. 6.1.2 16 Feb 2021

    Nothing published for this version

  27. 6.1.1 29 Jan 2019
    Release notes

    Added

    • The preferred type name is _doc, so that index APIs have the same path as they will have in 7.0
    • Added BucketSelector aggregation #1554
    • Added DerivativeAggregation #1553
    • The preferred type name is _doc, so that index APIs have the same path as they will have in 7.0
    • Introduced new version of PHP-CS-Fixer and new Lint travis step. #1555
    • Added typed_keys support for Search queries #1603

    Improvements

    • Reduced memory footprint of response by not keeping the raw JSON data when JSON after JSON has been parsed. #1588

    Deprecated

    • Index templates use index_patterns instead of template
    Open source →
  28. 6.1.0 07 Dec 2018
    Release notes

    Backward Compatibility Breaks

    • Made result sets adhere to \Iterator interface definition that they implement. Specifically, you need to call valid() on the result set before calling current(). When using foreach this is done by PHP automatically. When valid returns false, the return value of current is undefined instead of false. #1506
      • \Elastica\ResultSet::next returns void instead of \Elastica\Result|false
      • \Elastica\Bulk\ResponseSet::current returns \Elastica\Bulk\Response instead of \Elastica\Bulk\Response|false
      • \Elastica\Multi\ResultSet::current returns \Elastica\ResultSet instead of \Elastica\ResultSet|false

    Added

    • Added a transport class for mocking a HTTP 403 error codes, useful for testing response failures in inheriting clients #1529
    • Field param for Elastica\Query\FunctionScore::addRandomScoreFunction #1529
    • Index Recovery : the indices recovery API provides insight into on-going index shard recoveries. It was never been implemented into Elastica. #1537
    • add parent_id (reference #1518) in QueryBuilder. #1533
    • implemented string_distance option in Term Suggestion #1543

    Improvements

    • Using Elastica\Query\FunctionScore::addRandomScoreFunction without $field parameter is deprecated since ES 6.0 and will fail since ES 7.0 #1522

    • Aggreation\Percentiles updated to a newer version of the Algorithm (T-Digest 3.2) and Percentiles results changed a bit Have a look at here, so updated tests in order not to fail. #1531

    • Aggregation\Percentiles have been updated since Elasticsearch 2.3. In this version compression, HDR histogram changed their implementations. The missing field has never been implemented. #1532

      Before

        "compression" : 200,
        "method" : "hdr",
        "number_of_significant_value_digits" : 3
      

      Now

        "tdigest": {
          "compression" : 200
        },
        "hdr": {
          "number_of_significant_value_digits" : 3
        }
      
    • Never implemented the method Missing on Aggregation\Percentiles #1532

    Open source →
  29. 6.0.2 29 May 2018
    Release notes

    Added

    • Added support for pipeline when indexing document. #1455
    • Added support for multiple bucket sort orders for aggregations. #1480
    • Added basic support for the Elasticsearch Task Api
    • Added updateByQuery endpoint. #1499

    Improvements

    • Use source script field instead of deprecated (since ES 5.6) inline field. #1497
    • Updated Elasticsearch testing version to 6.2.4. #1501
    Open source →
  30. 6.0.1 18 Feb 2018
    Release notes

    Bugfixes

    Added

    • Added request parameters to Client->deleteDocuments(). #1419
    • Added request parameters to Type->updateDocuments(), Type->addDocuments(), Type->addObjects(), Index->addDocuments(), Index->updateDocuments(). #1427
    • Added avg_bucket() and sum_bucket() in aggregations PR#1443 - (https://github.com/ruflin/Elastica/issues/1279)
    • Added support for terms lookup mechanism on terms query #1452
    Open source →
  31. 6.0.0 14 Nov 2017
    Release notes

    Backward Compatibility Breaks

    Added

    • Added clear() to Scroll for closing search context on ES manually
    • Added Elastica\Aggregation\StatsBucket

    Improvements

    • Clear search context on ES after usage in Scroll
    Open source →
  32. 6.0.0-beta1 05 Oct 2017 pre-release
    Release notes

    Backward Compatibility Breaks

    Bugfixes

    • Enforce Content-Type requirement on the layer Rest, a PR on Elastica #1301 solved it (it has been implemented only in the HTTP Transport), but it was not implemented in the Guzzle Transport. #1349
    • Scroll no longer does an extra iteration both on an empty result and on searches where the last page has a significantly smaller number of results than the pages before it.

    Added

    • Added Query\SpanContaining, Query\SpanWithin and Query\SpanNot #1319
    • Implemented Pipeline and Processors. #1373
    • In PHP 7.2 count() now raises a warning when an invalid parameter is passed. Only arrays and objects implementing the Countable interface should be passed. #1378
    Open source →
  33. 5.3.6 29 Aug 2019

    Nothing published for this version

  34. 5.3.5 28 Jan 2019

    Nothing published for this version

  35. 5.3.4 16 Jan 2019

    Nothing published for this version

  36. 5.3.3 16 Oct 2018

    Nothing published for this version

  37. 5.3.2 29 May 2018

    Nothing published for this version

  38. 5.3.1 18 Feb 2018

    Nothing published for this version

  39. 5.3.0 26 Jul 2017
    Release notes

    Backward Compatibility Breaks

    • Removed Query\NumericRange, use Query\Range instead #1334

    Bugfixes

    • Send the scroll_id inside a json body instead of plain text #1325

    Added

    • Added getNumberOfReplicas() for index settings PR#1324
    • Added getNumberOfShards() for index settings PR#1321
    • Added \Elastica\Query\Span* for proximity searches #304
    • Added avg_bucket() and sum_bucket() in aggregations PR#1443 - (https://github.com/ruflin/Elastica/issues/1279)
    Open source →
  40. 5.2.1 07 Jun 2017
    Release notes

    Bugfixes

    • Fix elastic 5.3.x deprecation warning related to Content-Type not being set.
    • Fix updating settings of an index. #1296
    • Remove Elastica\Search::OPTION_SEARCH_TYPE_DFS_QUERY_AND_FETCH and Elastica\Search::OPTION_SEARCH_TYPE_QUERY_AND_FETCH as no longer supported as of 5.3.0
    • Fix bad parameter value to refresh document #1318

    Added

    • Parameter filter_path for response filtering (e.g. $index->search($query, ['filter_path' => 'hits.hits._source']))
    • Add support for Health parameters for Cluster\Health endpoint (new prop : delayed_unassigned_shards, number_of_pending_tasks, number_of_in_flight_fetch, task_max_waiting_in_queue_millis, active_shards_percent_as_number)
    • Add support for querystring in Type. this allow to use update_all_types in type mapping in order to resolve conflicts between fields in different types. Conflicts between fields in different types
    • Added \Elastica\Query\ParentId to avoid join with parent documents #1287
    • Added \Elastica\Reindex for reindexing between indices #1311

    Improvements

    • Added support for other_bucket and other_bucket_key paramters on Elastica\Aggregation\Filters
    • Update elasticsearch testing dependency to 5.4.1

    Deprecated

    • Deprecated Tool\CrossIndex use \Elastica\Reindex instead #1311
    Open source →
  41. 5.2.0 13 Apr 2017
    Release notes

    Bugfixes

    • Fix reading bool index settings like \Elastica\Index\Settings::getBlocksWrite. Elasticsearch returns all settings as strings and does not normalize bool values. The getters now return the right bool value for whichever string representation is used like 'true', '1', 'on', 'yes'. #1251
    • Fix for QueryBuilder version check \Elastica\QueryBuilder\Version\Version240.php added all new query types to queries array. #1266 #1269
    • Do not modify the original query in \Elastica\Search::count. #1276

    Added

    • Added \Elastica\Client::requestEndpoint, \Elastica\Index::requestEndpoint, \Elastica\Type::requestEndpoint that allow make requests with official client Endpoint usage. #1275
    • Added \Elastica\Aggregation\GeoBounds that computes the bounding box containing all geo_point values for a field. #1271
    • Added \Elastica\Query\MatchNone the inverse of MatchAll. #1276

    Improvements

    • added support for the "explain" flag of AnalyzeAPI #1254
    • added support for the "request_cache" search option #1243
    • skip sending "retry_on_conflict=0" default query param to improve compatibility with Amazon Elasticsearch #1047
    • optimized \Elastica\Scroll to avoid one request #1273
    • Update elasticsearch-php dependency to 5.2.0 #1245
    • Update elasticsearch testing dependency to 5.2.2 #1245

    Deprecated

    • Deprecated \Elastica\Exception\ElasticsearchException which is irrelevant since Elasticsearch now exposes the errors as a structured array instead of a single string. Use \Elastica\Exception\ResponseException::getResponse::getFullError instead.
    • Deprecated both prefix_len & min_word_len fields in Elastica\Suggest\CandidateGenerator\DirectGenerator as these now return errors when using the phrase suggester to querying terms. Use prefix_length & min_word_length instead #1282 Use \Elastica\Exception\ResponseException::getResponse::getFullError instead. #1251
    Open source →
  42. 5.1.0 15 Feb 2017
    Release notes

    Backward Compatibility Breaks

    • \Elastica\Script\AbstractScript added the script language as constructor argument and sub-classes must implement getScriptTypeArray

    Bugfixes

    • Removed features that do not exist in Elasticsearch 5.0 anymore:
      • ttl and timestamp logic: setters and getters in documents and mapping
      • \Elastica\Query\Missing: negate \Elastica\Query\Exists instead
      • \Elastica\Query\TopChildren
    • \Elastica\Query\MatchPhrase and \Elastica\Query\MatchPhrasePrefix do not extend \Elastica\Query\Match anymore because they do not share exactly the same options
    • Removed the routing option in \Elastica\Index::create because there is no routing param when creating an index. So that option was doing nothing so far but fails in Elasticearch 5.0 because the non-existing query param is validated.
    • Fix relation property of \Elastica\Query\GeoShapeProvided
    • repoint \Elastica\Type::exists from the deprecated /{index}/{type} endpoint to /{index}/_mapping/{type}

    Added

    • added \Elastica\Script\ScriptId to reference stored scripts by ID
    • added \Elastica\Query\AbstractGeoShape::RELATION_WITHIN
    • Date math in index names is now escaped in URI
    • Added a check for paths that already have date math escaped

    Improvements

    • \Elastica\Query\HasParent to use parent_type instead of type. Fixes warning due to field being deprecated.

    Deprecated

    • Deprecated functionality that is also deprecated in Elasticsearch 5.0:
      • \Elastica\Client::optimizeAll in favor of \Elastica\Client::forcemergeAll
      • \Elastica\Query\BoolQuery::setMinimumNumberShouldMatch in favor of \Elastica\Query\BoolQuery::setMinimumShouldMatch
      • \Elastica\Query\GeoDistanceRange: use distance aggregations or sorting instead
      • \Elastica\Query\GeohashCell
      • \Elastica\Query\Indices: search on the _index field instead
      • \Elastica\Query\Match::setFieldType: use \Elastica\Query\MatchPhrase and \Elastica\Query\MatchPhrasePrefix instead
    • \Elastica\Transport\Null is deprecated because null is a reserved class name in PHP 7. Use \Elastica\Transport\NullTransport instead.
    Open source →
  43. 5.0.0 14 Dec 2016
    Release notes

    Backward Compatibility Fixes

    • Updated Elastica\Test\Suggest\CompletionTest now payload and output are removed
    • Updated Elastica\Test\TypeTest::testGetDocumentWithFieldsSelection The stored_fields parameter will only return stored fields — it will no longer extract values from the _source
    • remove _shutdown for Node and Cluster as deprecated

    Bugfixes

    • Query options such as "timeout" or "terminate_after" should not be ignored when using Multi\Search

    Added

    • Added regex option form suggest completions https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html#regex

    Improvements

    • \Elastica\JSON throws exception with readable message instead of errno
    • \Elastica\JSON::stringify throws \Elastica\Exception\JSONParseException on error
    Open source →
  44. 5.0.0-beta1 09 Nov 2016 pre-release
    Release notes

    Backward Compatibility Breaks

    • Update elasticsearch dependency to 5.0
    • Replace flush refresh param with a options array
    • Rename Mapping::setFields to Mapping::setStoredFields
    • Removing all deprecated filters including tests. Use queries instead.
    • Remove deprecated Elastica\Script*.php classes. Use Elastica\Script* instead.
    • Remove Elastica/Query/Image.php and test/Elastica/Query/ImageTest.php, no more support for image-plugin.
    • Remove Elastica/Query/Filtered.php and test/Elastica/Query/FilteredTest.php and all uses from code.
    • Remove index.merge.policy.merge_factor, and set/get MergePolicy as it looks deprecated from ES 1.6
    • Add new "Percolate query" functionality and tests
    • Remove in Elastica\AbstractUpdateAction Option "percolate", getter and setter as deprecated as of ES 1.3. Use Percolator instead.
    • Remove in Elastica\Aggregation\DateHistogram Option "pre_zone" is deprecated as of ES 1.5. Use "time_zone" instead
    • Remove in Elastica\Aggregation\DateHistogram Option "post_zone" is deprecated as of ES 1.5. Use "time_zone" instead.
    • Remove in Elastica\Aggregation\DateHistogram Option "pre_zone_adjust_large_interval" is deprecated as of ES 1.5. Use "time_zone" instead.
    • Remove in Elastica\Aggregation\DateHistogram Option "pre_offset" is deprecated as of ES 1.5. Use "offset" instead.
    • Remove in Elastica\Aggregation\DateHistogram Option "post_offset" is deprecated as of ES 1.5. Use "offset" instead.
    • Remove Elastica\Document::add as deprecated. Use Elastica\Document::set instead
    • Remove Elastica\Document::setScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate.
    • Remove Elastica\Document::getScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate.
    • Remove Elastica\Document::hasScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate.
    • Remove Elastica/Query::setLimit as deprecated. Use the Elastica/Query::setSize() method
    • Remove Elastica\Query\Builder
    • Remove Elastica\Query\Fuzzy::addField as deprecated. Use Elastica\Query\Fuzzy::setField and Elastica\Query\FuzzysetFieldOption instead.
    • Remove Elastica\Query::setIds as deprecated. Use Elastica\Query::like instead.
    • Remove Elastica\Query::setLikeText as deprecated. Use Elastica\Query::like instead.
    • Remove Elastica\Query Option "percent_terms_to_match" is deprecated as of ES 1.5. Use "minimum_should_match" instead.
    • Remove Elastica\QueryBuilder\DSL\Query "More Like This Field" query is deprecated as of ES 1.4. Use MoreLikeThis query instead.
    • Changed visibility from protected to private Elastica\ResultSet::$_position as accessing this property in an extended class is deprecated.
    • Changed visibility from protected to private Elastica\ResultSet::$_response as accessing this property in an extended class is deprecated.
    • Changed visibility from protected to private Elastica\ResultSet::$_query as accessing this property in an extended class is deprecated.
    • Changed visibility from protected to private Elastica\ResultSet::$_results as accessing this property in an extended class is deprecated.
    • Removed Elastica\ResultSet::$_timedOut as deprecated. Use ResultSet->hasTimedOut() instead.
    • Removed Elastica\ResultSet::$_took as deprecated. Use ResultSet->hasTimedOut() instead.
    • Removed Elastica\ResultSet::$_totalHits as deprecated. Use ResultSet->hasTimedOut() instead.
    • Removed Elastica\Type::delete() It is no longer possible to delete the mapping for a type. Instead you should delete the index and recreate it with the new mappings.
    • Removed Elastica\Query\Builder as deprecated. Use new Elastica\QueryBuilder instead.
    • Removed Elastica\Percolator as deprecated. Use new Elastica\Query\Percolate instead.
    • Changed Elastica\Index::deleteByQuery() to use new API https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docs-delete-by-query.html
    • Remove Elastica\ScanAndScroll and test, Scan search type is removed from ElasticSearch 5.0.
    • Remove support for PHP 5.4 and 5.5. Require at least PHP 5.6 #1202
    • Remove groovy as default scripting language
    • Remove search_type=count as it is removed in Elasticsearch 5.0
    • Remove fielddata_fields as it has been deprecated in ES5, use parameter docvalue_fields instead

    Added

    • Elastica\QueryBuilder\DSL\Query::exists
    • Elastica\QueryBuilder\DSL\Query::type

    Improvements

    • Add a constant for the expression language.
    • Health::getIndices returns key=>value result, where key === $indexName.
    $cluster->getHealth()->getIndices()[$indexName]
    // or
    $indices = $cluster->getHealth()->getIndices();
    $indices[$indexName]
    
    • Added a Query::setTrackScores method
    • Implemented painless as default scripting language in tests
    • Updated Dockerfile and elasticsearch.yml to allow inline.script: true
    • Updated some Script function to use groovy as now default scripting is painless
      • Elastica\Test\Aggregation\ScriptTest::testAggregationScript
      • Elastica\Test\Aggregation\ScriptTest::testAggregationScriptAsString
      • Elastica\Test\Query\FunctionScoreTest::testScriptScore
      • Elastica\Test\BulkTest::testUpdate
      • Elastica\Test\ClientTest::testUpdateDocumentByScript
      • Elastica\Test\ClientTest::testUpdateDocumentByScriptWithUpsert
      • Elastica\Test\ClientTest::testUpdateDocumentPopulateFields
      • Elastica\Test\ClientTest::testUpdateDocumentPopulateFields
      • Elastica\Test\TypeTest::testUpdateDocument
      • Elastica\Test\TypeTest::testUpdateDocumentWithIdForwardSlashes
      • Elastica\Test\TypeTest::testUpdateDocumentWithParameter
      • Elastica\Test\TypeTest::testUpdateDocumentWithFieldsSource
    • Composer installations will no longer include tests and other development files.
    Open source →
  45. 3.2.4 28 Dec 2018

    Nothing published for this version

  46. 3.2.3 23 Sep 2016
    Release notes

    Bugfixes

    • Query builder is now compatible with Elasticsearch 2.X

    Added

    • Elastica\Aggregation\BucketScript
    • Elastica\Aggregation\SerialDiff
    • Elastica\Query\InnerHits

    Improvements

    • Elastica\Client constructor now accepts a transport of fully qualified name. #1169
    • Update Elasticsearch dependency to 2.4.0
    Open source →
  47. 3.2.2 23 Aug 2016
    Release notes

    Backward Compatibility Fixes

    Bugfixes

    • Set HTTP headers on each request preventing server error if persistent connection is enabled and compression enabled and later disabled for the same connection.
    • Removed int type hinting in setMinimumMatch (Terms Query): it should also allow string. #1151

    Added

    • Elastica\QueryBuilder\DSL\Query::geo_distance
    • Elastica\Aggregation\GeoCentroid #1150
    • Multi value field param for decay function.
    • Elastica\Client::getVersion #1152
    • Added support for terminate_after parameter in search queries #1168

    Improvements

    • Set PHP 7.0 as default development version
    • Get the root reason from Elasticsearch's error JSON, when available #1111
    • Optimize memory usage for Http Adapter #1161

    Changed

    • Remove JSON_ELASTICSEARCH constant as not needed anymore
    Open source →
  48. 3.2.1 15 Jun 2016
    Release notes

    Backward Compatibility Fixes

    • Reintroduced properties in ResultSet removed in 3.2.0 as deprecated properties to be removed in 4.0

    Bugfixes

    • Fix fatal error on Query::addScriptField() if scripts were already set via setScriptFields() #1086
    • Fix namespace collision of Type in Query\Ids #1104

    Added

    • Added the concept of ResultSet Transformers. The Transformer adds more information to a Result, for example the original object or data that created the Result. #1066
    • Tidied property initialisation in classes where it was duplicated
    Open source →
  49. 3.1.1 18 Mar 2016
    Release notes

    Added

    • Add an "AwsAuthV4" transport that automatically signs requests using credentials from the environment or from the client config. This allows using Elastica with Amazon ElasticSearch Service domains that are restricted to IAM roles or policies. #1056
    • Update elasticsearch build dependency to elasticsearch 2.2.1

    Improvements

    • Elastica\Exception\InvalidException will be thrown if you try using an Elastica\Aggregation\AbstractSimpleAggregation without setting either the field or script param.
    • Elastica\Index->deleteByQuery($query, $options) $query param can be a query array again
    • Elastica\Query\MoreLikeThis->toArray() now supports providing a non-indexed document as an input to perform the comparison.
    • Elastica\Status will lazy load the _stats at when it is needed. https://github.com/ruflin/Elastica/pull/1058
    Open source →
  50. 3.1.0 30 Jan 2016
    Release notes

    Backward Compatibility Breaks

    • Update Guzzle transport to use Guzzle 6
    • Elastica\Query\FunctionScore::setFilter - deprecated and will throw DeprecatedException since not supported by Elasticsearch. Use setQuery instead.

    Added

    • Elastica\Result->getDocument and Elastica\ResultSet->getDocuments for return \Elastica\Document. https://github.com/ruflin/Elastica/issues/960

    Improvements

    • Add username and password params to connection

    Deprecated

    • Elastica\AbstractScript|Script|ScriptFile|ScriptFields deprecated in favor of Elastica\Script|AbstractScript|Script|ScriptFile|ScriptFields #1028
    • Elastica\Filter* are deprecated. You can use proper queries instead. Backward compatibility layer provided, but will be removed in next Elastica releases. See https://www.elastic.co/blog/better-query-execution-coming-elasticsearch-2-0 and https://github.com/ruflin/Elastica/issues/1001
    Open source →
  51. 3.0.1 05 Jan 2016
    Release notes

    Improvements

    • Update build dependency to elasticsearch 2.1.1 #1022
    • Readd \Elastica\Filter\Nested. See https://github.com/ruflin/Elastica/issues/1001 #1020
    Open source →
  52. 3.0.0 04 Jan 2016
    Release notes

    Backward Compatibility Breaks

    • Revert getError changes in Response object and make it better BC compatible. See comment here.

    Bugfixes

    • Function score query: corrected the score_method average to avg #975
    • Set json_decode() assoc parameter to true in Elastica\Response #1005
    • Add bigintConversion to keys passed to connection config in Elastica\Client #1005
    • Use POST instead of PUT to send bulk requests #1010

    Added

    • Elastica\Query\MultiMatch::setFuzziness now supports being set to AUTO with the const MultiMatch::FUZZINESS_AUTO
    • Elastica\Type\Mapping::send now accepts query string parameters to send along with the mapping request
    • Elastica\Query\BoolQuery::addFilter

    Improvements

    • More info on Elastica\Exception\PartialShardFailureException. Not just number of failed shards.
    • Allow bool in TopHits::setSource function #1012

    Deprecated

    • Elastica\Query\Filtered triggers E_USER_DEPRECATED error because filtered query is deprecated since ES 2.0.0-beta1. Use BoolQuery instead.
    • Elastica\QueryBuilder\DSL\Query::filtered() triggers E_USER_DEPRECATED error because filtered query is deprecated since ES 2.0.0-beta1. Use bool() instead.
    Open source →
  53. 3.0.0-beta1 26 Nov 2015 pre-release
    Release notes

    Backward Compatibility Breaks

    • Elastica\AbstractUpdateAction::setPercolate now throw DeprecatedException, user Percolator instead
    • Elastica\AbstractUpdateAction::getPercolate now throw DeprecatedException, user Percolator instead
    • Elastica\AbstractUpdateAction::hasPercolate now throw DeprecatedException, user Percolator instead
    • Elastica\Type::delete now throw DeprecatedException, it is no longer possible to delete the mapping for a type. Instead you should delete the index and recreate it with the new mappings
    • MoreLikeThis::setLikeText deprecated from ES 2.0, use setLike instead, but there is a difference - setLike haven't trim magic inside for strings
    • Elastica\Document, methods: setScript, getScript, hasScript now throw DeprecatedException.
    • MoreLikeThis, methods: setLikeText, setIds, setPercentTermsToMatch now throw DeprecatedException.
    • Elastica\Aggregation\DateHistogram, methods: setPreZone, setPostZone, setPreZoneAdjustLargeInterval, setPreOffset, setPostOffset now throw DeprecatedException.
    • Elastica\Query\Builder trigger E_USER_DEPRECATED error when you try use it.
    • Elastica\Filter\Bool and Elastica\Query\Bool trigger E_USER_DEPRECATED error when you try use them.
    • Elastica\Query\Fuzzy:addField method trigger E_USER_DEPRECATED error
    • Elastica\Query\FunctionScore:addBoostFactorFunction method trigger E_USER_DEPRECATED error
    • Elastica\Query:setLimit method trigger E_USER_DEPRECATED error
    • Elastica\Document:add method trigger E_USER_DEPRECATED error
    • Type::moreLikeThis API was removed from ES 2.0, use MoreLikeThis query instead
    • Remove Thrift transport and everything related to it
    • Remove Memcache transport and everything related to it
    • Remove BulkUdp and everything related to it
    • Remove Facets and everything related to it
    • Remove ansible scripts for tests setup and Vagrantfile as not needed anymore. All is based on docker containers now
    • Support for PHP 5.3 removed
    • Elastica\Reponse::getError() now returns and array instead of a string
    • Move function \Elastica\Index\Status::getAliases() and hasAlias(...) to \Elastica\Index::getAliases()
    • Remove \Elastica\Index\Status object and related functions
    • \Elastica\Query\FuzzyLikeThis remove as not supported anymore
    • Remove \Elastica\Status::getServerStatus() as the information was removed
    • DeleteByQuery now requires the delete-by-query plugin isntalled
    • Remove \Elastica\Filter\Nested as it is replaced by \Elastica\Query\Nested
    • Require at least PHP 5.4

    Bugfixes

    • Fixed GeoShapeProvided relation parameter position

    Added

    • Elastica\Reponse::getErrorMessage was added as getError is now an object
    • Elastica\Query\MoreLikeThis::setLike
    • \Elastica\Exception\DeprecatedException
    • Connection option to convert JSON bigint results to strings can now be set #717

    Improvements

    • Travis builds were moved to docker-compose setup. Ansible scripts and Vagrant files were removed
    • trigger_error with E_USER_DEPRECATE added to deprecated places
    • DeprecatedException will be thrown, if there is a call of method that not support BC

    Deprecated

    • Elastica\Type::delete is deprecated
    • Elastica\Filter\Bool is deprecated
    • Elastica\Query\Bool is deprecated
    • Elastica\Query\MoreLikeThis::setLikeText is deprecated
    • Elastica\Query\MoreLikeThis::setIds is deprecated
    Open source →
  54. 2.3.3 11 Jan 2019

    Nothing published for this version

  55. 2.3.2 30 Oct 2018

    Nothing published for this version

  56. 2.3.1 19 Oct 2015
    Release notes

    Bugfixes

    • Filters aggregation: empty name is named bucket #935
    • Prevent mix keys in filters (#936) #939
    • Fix empty string is not anonymous filter #935
    • Filters aggregation: empty name is named bucket #935

    Added

    • Support for field_value_factor #953
    • Added setMinDocCount and setExtendedBounds options #947
    • Avoid environment dependecies in tests #938

    Improvements

    • Update elasticsearch dependency to elasticsearch 1.7.3 #957

    Deprecated

    • Added exceptions of deprecated transports to deprecation list
    Open source →
  57. 2.3.0 15 Sep 2015
    Release notes

    Backward Compatibility Breaks

    • Objects do not casts to arrays in setters and saved in params as objects. There is many side effects if you work with params on "low-level" or change your objects after you call setter with object as argument. #916

    Added

    Improvements

    • Support the http.compression in the Http transport adapter #515
    • Introduction of Lazy toArray #916
    • Update Elasticsearch dependency to 1.7.2 #929
    Open source →
  58. 2.2.1 10 Aug 2015
    Release notes

    Added

    • Support for index template added #905

    Improvements

    • Update Elasticsearch dependency to 1.7.1 and update plugin dependencies #909
    • Update php-cs-fixer to 1.10 #898
    • Elastica\QueryBuilder now uses Elastica\QueryBuilder\Version\Latest as default version to avoid empty version classes. #897
    • Update elasticsearch-image to work with ES 1.7.1 #907
    • Local dev environment was refactored to fully work in docker environment. Running tests is now only one command: make tests #901

    Deprecated

    • Elastica\QueryBuilder\Version\Version150 deprecated in favor of Elastica\QueryBuilder\Version\Latest #897
    Open source →
  59. 2.2.0 08 Jul 2015
    Release notes

    Backward Compatibility Breaks

    • Usage of constant DEBUG and method Elastica\Util::debugEnabled is removed. #868
    • Elastica\Response::getTransferInfo will not return "request_header" by default. #868
    • The Image Plugin is currently not compatible with Elasticearch 1.6.0

    Bugfixes

    • Fixed segmentation fault in PHP7 #868
    • Removed deprecation for Elastica\Type::deleteByQuery #875

    Improvements

    • CallbackStrategy now will accept any callable as callback, not only instance of Closure. #871
    • StrategyFactory now will try to find predefined strategy before looking to global namespace. #877
    • Update elasticsearch dependency to elasticsearch 1.6.0 https://www.elastic.co/downloads/past-releases/elasticsearch-1-6-0
    • All elasticsearch plugin dependencies were updated to the newest version.
    • Methods of classes in QueryBuilder\DSL namespace now have exact same signatures as corresponding constructors. #878
    • Constructor of Aggregation\Filter now accepts filter as second parameter #878
    • Constructor of Filter\AbstractMulti (BoolAnd, BooldOr) now accepts array of filters as parameter #878
    • Constructor of Query\Match now accepts arguments #878
    • Coverage Reporting improved with Codecov #888
    • Added 'query_cache' option for search #886
    Open source →
  60. 2.1.0 01 Jun 2015
    Release notes

    Added

    • Multiple rescore query #820
    • Support for a custom connection timeout through a connectTimeout parameter. #841
    • SignificantTerms Aggregation #847
    • Support for 'precision_threshold' and 'rehash' options for the Cardinality Aggregation [#851]
    • Support for retrieving id node #852
    • Scroll Iterator #842
    • Gitter Elastica Chat Room add for Elastica discussions: https://gitter.im/ruflin/Elastica
    • Introduce PHP7 compatibility and tests. #837
    • Tool\CrossIndex for reindexing and copying data and mapping between indices #853
    • CONTIRUBTING.md file added for contributor guidelines. #854

    Improvements

    • Introduction of Changelog standard based on http://keepachangelog.com/. changes.txt moved to CHANGELOG.md #844
    • Make host for all tests dynamic to prepare it for a more dynamic test environment #846
    • Node information is retrieved based on id instead of name as multiple nodes can have the same name. #852
    • Guzzle Http dependency updated to 5.3.*
    • Remove NO_DEV builds from travis build matrix to speed up building. All builds include no dev packages.
    • Introduction of benchmark test group to make it easy to run benchmark tests.
    • Make the docker images directly available on the docker registry. This speeds up fetching of the images and automates the build of the images.

    Backward Compatibility Breaks

    • Elastica\ScanAndScroll::$_lastScrollId removed: key() now always returns the next scroll id #842

    Deprecated

    • Facets are deprecated. You are encouraged to migrate to aggregations instead. #855
    • Elastica\Query\Builder is deprecated. Use new Elastica\QueryBuilder instead. #855
    • For PHP 7 compatibility Elastica\Query\Bool was renamed to *\BoolQuery, Elastica\Filter\Bool was renamed to BoolFilter, Elastica\Transport\Null was renamed to NullTransport as Null and Bool are reserved phrases in PHP 7. Proxy objects for all three exist to keep backward compatibility. It is recommended to start using the new objects as the proxy classes will be deprecated as soon as PHP 7 is stable. #837
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive