1# Changelog
2All notable changes to this project will be documented in this file.
3
4The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
7## [Unreleased](https://github.com/ruflin/Elastica/compare/7.2.0...master)
8### Backward Compatibility Breaks
9### Added
10### Changed
11* Use `ramsey/composer-install` to simplify CI jobs and test with the lowest set of dependencies [#2113](https://github.com/ruflin/Elastica/pull/2113)
12* Bumped `elasticsearch/elasticsearch` to `7.10` to be able to use `OpenPointInTime` class [#2113](https://github.com/ruflin/Elastica/pull/2113)
13* Updated `php-cs-fixer` to `3.9.5` [#2110](https://github.com/ruflin/Elastica/pull/2110)
14* Changed `Elastica\Index\Settings::get` adding ability to get default settings by @krasilnikovm [#2115](https://github.com/ruflin/Elastica/pull/2115)
15* Update `AWSAuthV4 transport` to sanitize host name for AWS requests before signing [#2090](https://github.com/ruflin/Elastica/pull/2090)
16* New method `Elastica\Aggregation\Terms::setMissingBucket`. For Composite Agg. Include in the response documents without a value for a given source. [#2117](https://github.com/ruflin/Elastica/pull/2117)
17* Increased `PHPStan` level to `5` by @franmomu [#2108](https://github.com/ruflin/Elastica/pull/2108)
18### Deprecated
19### Removed
20* Removed `CallbackStrategyTestHelper` and `ErrorsCollector` from `tests` [#2111](https://github.com/ruflin/Elastica/pull/2111)
21### Fixed
22* Fixed `Query/Terms` terms phpdoc from `array<bool|float|int|string>` to `list<bool|float|int|string>` [#2118](https://github.com/ruflin/Elastica/pull/2118)
23### Security
24
25## [7.2.0](https://github.com/ruflin/Elastica/compare/7.2.0...7.1.5)
26### Backward Compatibility Breaks
27* 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](https://github.com/ruflin/Elastica/pull/2082)
28* 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](https://github.com/ruflin/Elastica/pull/2085)
29### Added
30* Added `PHPStan` at level 3 by @franmomu [#2064](https://github.com/ruflin/Elastica/pull/2064)
31* Added coverage check to CI by @franmomu [#2071](https://github.com/ruflin/Elastica/pull/2071)
32* Added `string` as a valid type for `data` in `Request`  by @franmomu [#2078](https://github.com/ruflin/Elastica/pull/2078)
33* Added missing `throws` PHPDoc tags by @franmomu [#2077](https://github.com/ruflin/Elastica/pull/2077)
34* Added `Search::addIndexByName()`, `Search::hasIndexByName()` and `Search::addIndicesByName()` by @franmomu [#2103](https://github.com/ruflin/Elastica/pull/2103)
35### Changed
36* Updated `symfony/phpunit-bridge` to `6.0` by @franmomu [#2067](https://github.com/ruflin/Elastica/pull/2067)
37* Updated `php-cs-fixer` to `3.8.0` [#2074](https://github.com/ruflin/Elastica/pull/2074)
38* Updated `composer-normalize` to `2.2.28` by @deguif [#2084](https://github.com/ruflin/Elastica/pull/2084)
39* Increased `PHPStan` level to `4` [#2080](https://github.com/ruflin/Elastica/pull/2080)
40* `ExceptionInterface` extends `Throwable` [#2083](https://github.com/ruflin/Elastica/pull/2083)
41* Changed `value` in `SetProcessor` to accept `mixed` instead of `string` by @franmomu [#2082](https://github.com/ruflin/Elastica/pull/2082)
42* Updated `Query::create` PHPDoc to include supported types and propagate it to callers by @franmomu [#2088](https://github.com/ruflin/Elastica/pull/2088)
43* Update some iterable types in PHPDoc to be more specific by @franmomu [#2092](https://github.com/ruflin/Elastica/pull/2092)
44* Updated `AwsAuthV4Test` adding assertions for exception type by @franmomu [#2094](https://github.com/ruflin/Elastica/pull/2094)
45### Deprecated
46* Deprecated `Elastica\Reindex::WAIT_FOR_COMPLETION_FALSE`, use a boolean as parameter instead by @franmomu [#2070](https://github.com/ruflin/Elastica/pull/2070)
47* Passing anything else than a boolean as 1st argument to `Reindex::setWaitForCompletion`, pass a boolean instead by @franmomu [#2070](https://github.com/ruflin/Elastica/pull/2070)
48* Deprecated passing a `string` as 1st argument to `Search::addIndex()` and `Search::hasIndex()`, pass an Index instance instead by @franmomu [#2103](https://github.com/ruflin/Elastica/pull/2103)
49* Deprecated passing an array of `string` as 1st argument to `Search::addIndices()`, use an array of Index instances by @franmomu [#2103](https://github.com/ruflin/Elastica/pull/2103)
50
51### Removed
52* Removed `egeloen/http-adapter` as suggested package since the project is abandoned by @franmomu [#2069](https://github.com/ruflin/Elastica/pull/2069)
53* Removed `0` as valid request data using Analyze API by @franmomu [#2068](https://github.com/ruflin/Elastica/pull/2068)
54* Removed dead code in `AwsAuthV4Test` by @franmomu [#2073](https://github.com/ruflin/Elastica/pull/2073)
55### Fixed
56* Fixed some PHPDoc types adding `null` as possible value by @franmomu [#2070](https://github.com/ruflin/Elastica/pull/2070) and [#2087](https://github.com/ruflin/Elastica/pull/2087)
57* Fixed passing wrong types to `GapPolicyInterface::setGapPolicy()`, `Document::setDocAsUpsert()` and `Connection::setPort()` methods  by @franmomu [#2081](https://github.com/ruflin/Elastica/pull/2081)
58* Fixed `Http` PHPDoc adding `\CurlHandle` type for Curl connection by @franmomu [#2086](https://github.com/ruflin/Elastica/pull/2086)
59* Fixed case mismatch in method calls by @franmomu [#2087](https://github.com/ruflin/Elastica/pull/2087)
60* Fixed `MoreLikeThis::setLike()` PHPDoc allowing `Document` by @franmomu [#2091](https://github.com/ruflin/Elastica/pull/2091)
61* Fixed `Term::setTerm()` PHPDoc allowing scalar values for `$value` parameter by @franmomu [#2094](https://github.com/ruflin/Elastica/pull/2094)
62* Fixed `DateHistogram` deprecation: use `fixed_interval` or `calendar_interval` instead of `interval` by @VincentLanglet [#2099](https://github.com/ruflin/Elastica/pull/2099)
63
64## [7.1.5](https://github.com/ruflin/Elastica/compare/7.1.5...7.1.4)
65### Added
66* Added explicit return annotation to `Elastica\Multi\ResultSet::current()` and `Elastica\Multi\ResultSet::offsetGet()` by @franmomu [2056](https://github.com/ruflin/Elastica/pull/2056)
67* Add throwing `\Elastica\Exception\RequestEntityTooLargeException` on HTTP-413 responses in `\Elastica\Bulk` by @Vetaxon [2055](https://github.com/ruflin/Elastica/pull/2055)
68
69## [7.1.4](https://github.com/ruflin/Elastica/compare/7.1.4...7.1.3)
70### Added
71* Added support for `symfony/deprecation-contracts` 3.0 by @rguennichi [#2047](https://github.com/ruflin/Elastica/pull/2047)
72* Added aggregation `auto_date_histogram` @andriinavrotskii [#2051](https://github.com/ruflin/Elastica/pull/2051)
73### Fixed
74* Fixed version parameters for DeleteDocument by @pheyse24 [#2048](https://github.com/ruflin/Elastica/pull/2048)
75* Fixed version parameters for Index::addDocument() by @pidera [#2050](https://github.com/ruflin/Elastica/pull/2050)
76
77## [7.1.3](https://github.com/ruflin/Elastica/compare/7.1.2...7.1.3)
78### Added
79* Added support for scripted upsert on bulk requests by @dsgrillo [#1974](https://github.com/ruflin/Elastica/pull/1974)
80* Added `Elastica\Aggregation\CumulativeSum` by @limenet [#1987](https://github.com/ruflin/Elastica/pull/1987)
81* Added `ignore_failure` option to suitable ingest processors by @deguif [#2003](https://github.com/ruflin/Elastica/pull/2003)
82* Added `ignore_missing` option to `lowercase`, `remove`, `trim` and `uppercase` processors by @deguif [#2001](https://github.com/ruflin/Elastica/pull/2001)
83* Added `allow_duplicates` option to `append` processor by @deguif [#2004](https://github.com/ruflin/Elastica/pull/2004)
84* Added `bytes` processor by @deguif [#2008](https://github.com/ruflin/Elastica/pull/2008)
85* Added `indices_boost` option to `Elastica\Query` by @deguif [#2018](https://github.com/ruflin/Elastica/pull/2018)
86* Added `Elastica\Query\Terms::setBoost()` method to configure boost by @deguif [#2035](https://github.com/ruflin/Elastica/pull/2035)
87* Added `Elastica\Query\TermsSet` query by @mamchyts [#2020](https://github.com/ruflin/Elastica/pull/2020)
88* Added `terms_set` in query builder by @deguif [#2036](https://github.com/ruflin/Elastica/pull/2036)
89* Added `Elastica\Aggregation\Traits\BucketsPathTrait` to configure `buckets_path` on aggregations by @deguif
90  [#2037](https://github.com/ruflin/Elastica/pull/2037)
91  [#2039](https://github.com/ruflin/Elastica/pull/2039)
92* Allowed to configure a sub key when adding a param with `Elastica\Param::addParam()` by @deguif [#2030](https://github.com/ruflin/Elastica/pull/2030)
93### Changed
94* Triggered deprecation in `Elastica\Result::getType()` method by @deguif [#2016](https://github.com/ruflin/Elastica/pull/2016)
95* Updated `php-cs-fixer` to `3.3.2` by @deguif [#2022](https://github.com/ruflin/Elastica/pull/2022)
96* Updated `composer-normalize` to `2.15.0` by @deguif [#2021](https://github.com/ruflin/Elastica/pull/2021)
97* Updated `elasticsearch` test version to `7.15.2` by @deguif [#2027](https://github.com/ruflin/Elastica/pull/2027)
98* Extracted setting gap policy to `\Elastica\Aggregation\Traits\GapPolicyTrait` and introduced `\Elastica\Aggregation\GapPolicyInterface` with constants for options by @stchr [#2023](https://github.com/ruflin/Elastica/pull/2023)
99* Extracted setting `field` to `Elastica\Processor\Traits\FieldTrait` by @deguif [#2024](https://github.com/ruflin/Elastica/pull/2024)
100* Extracted setting `target_field` to `Elastica\Processor\Traits\TargetFieldTrait` by @deguif [#2026](https://github.com/ruflin/Elastica/pull/2026)
101* Simplified github action matrix for continuous integration workflow by @deguif [#2025](https://github.com/ruflin/Elastica/pull/2025)
102### Deprecated
103* Deprecated `Elastica\Query\Common` class, use `Elastica\Query\MatchQuery` instead by @deguif [#2013](https://github.com/ruflin/Elastica/pull/2013)
104* Deprecated `Elastica\QueryBuilder\DSL\Query::common_terms()`, use `match()` instead by @deguif [#2013](https://github.com/ruflin/Elastica/pull/2013)
105* Deprecated passing an `int` as 1st argument to `Elastica\Search::setOptionsAndQuery()`, pass an array with the key `size` instead by @deguif [#2010](https://github.com/ruflin/Elastica/pull/2010)
106* Deprecated `cutoff_frequency` option of `Elastica\Query\MatchQuery` by @deguif [#2014](https://github.com/ruflin/Elastica/pull/2014)
107* Deprecated `cutoff_frequency` option of `Elastica\Query\MultiMatch` by @deguif [#2015](https://github.com/ruflin/Elastica/pull/2015)
108* Deprecated `Elastica\Bulk::toString()`, `Elastica\Bulk\Action::toString()` and `Elastica\Request::toString()` methods, use `__toString()` method or cast to string instead by @deguif [#2033](https://github.com/ruflin/Elastica/pull/2033)
109* 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](https://github.com/ruflin/Elastica/pull/2038)
110* Deprecated not passing a `method` when constructing `Elastica\Aggregation\NormalizeAggregation` by @deguif [#2040](https://github.com/ruflin/Elastica/pull/2040)
111### Removed
112* Removed remaining `_type` field usages by @deguif [#2017](https://github.com/ruflin/Elastica/pull/2017)
113* Removed `Elastica\Bulk::$_type` dead property by @deguif [#2034](https://github.com/ruflin/Elastica/pull/2034)
114* Removed Elasticsearch old version checks in tests by @deguif [#2041](https://github.com/ruflin/Elastica/pull/2041)
115### Fixed
116* Fixed type-hint for `Elastica\Search::setOptionsAndQuery()` by @deguif [#2009](https://github.com/ruflin/Elastica/pull/2009)
117* Fixed terms query params resolution by @deguif [#2032](https://github.com/ruflin/Elastica/pull/2032)
118
119## [7.1.2](https://github.com/ruflin/Elastica/compare/7.1.1...7.1.2)
120### Backward Compatibility Breaks
121* Changed `Elastica\Exception\JSONParseException` inheritance, it now extends `\JsonException` instead of `\RuntimeException` [#1949](https://github.com/ruflin/Elastica/pull/1949)
122### Added
123* Added `Elastica\Aggregation\NormalizeAggregation` [#1956](https://github.com/ruflin/Elastica/pull/1956)
124* Added `Elastica\Suggest\Phrase::addDirectGenerator` to align with ES specification [#1964](https://github.com/ruflin/Elastica/pull/1964)
125* Added support for `psr/log` 2.0 and 3.0 [#1971](https://github.com/ruflin/Elastica/pull/1971)
126* Added new optional 'case_insensitive' option to `Elastica\Query\Wildcard` [#1894](https://github.com/ruflin/Elastica/pull/1894)
127* Added `Elastica\Result::getSort()` fetching the "sort" property of results [#1979](https://github.com/ruflin/Elastica/pull/1979)
128* Added exposure of Point-In-Time ID for search responses in `Elastica\ResultSet::getPointInTimeId()` [#1991](https://github.com/ruflin/Elastica/pull/1991)
129* Added `Elastica\Index::openPointInTime()` for opening a PiT on the index [#1994](https://github.com/ruflin/Elastica/pull/1994)
130* Added possibility to specify PointInTime on `Elastica\Query::setPointInTime()` [#1992](https://github.com/ruflin/Elastica/pull/1992)
131* Added `Elastica\Client::closePointInTime()` for closing a PiT [#1995](https://github.com/ruflin/Elastica/pull/1995)
132### Changed
133* Updated `php-cs-fixer` to `3.2.1`
134  [#1996](https://github.com/ruflin/Elastica/pull/1996)
135  [#1959](https://github.com/ruflin/Elastica/pull/1959)
136  [#1955](https://github.com/ruflin/Elastica/pull/1955)
137* Using default Elasticsearch images for testing instead of OSS https://github.com/ruflin/Elastica/pull/1954
138### Fixed
139* Fixed compatibility with `guzzlehttp/psr7` version `2.x` [#2002](https://github.com/ruflin/Elastica/pull/2002)
140* Fixed the assignment of `version`, `seq_no` and `primary_term` on `getDocument` [#1973](https://github.com/ruflin/Elastica/pull/1973)
141
142## [7.1.1](https://github.com/ruflin/Elastica/compare/7.1.0...7.1.1)
143### Backward Compatibility Breaks
144* Changed `Elastica\Query\MatchQuery::setFieldParam()` signature to allow passing bool, float or int [#1941](https://github.com/ruflin/Elastica/pull/1941)
145* Changed `Elastica\Query\MatchPhraseQuery::setFieldParam()` signature to allow passing bool, float or int [#1944](https://github.com/ruflin/Elastica/pull/1944)
146### Added
147* Excluded `docker` directory in `.gitattributes` [#1938](https://github.com/ruflin/Elastica/pull/1938)
148### Changed
149* Included `Content-Type` HTTP header every time, whatever the content of the body is [#1780](https://github.com/ruflin/Elastica/pull/1780)
150* Changed `Elastica\Status::indexExists()`, `Elastica\Status::aliasExists()` and `Elastica\Status::getIndicesWithAlias()` signatures [#1929](https://github.com/ruflin/Elastica/pull/1929)
151* Replaced `call_user_func()` and `call_user_func_array()` by direct calls [#1923](https://github.com/ruflin/Elastica/pull/1923)
152* Replaced legacy constant `CURLINFO_HTTP_CODE` by `CURLINFO_RESPONSE_CODE` [#1931](https://github.com/ruflin/Elastica/pull/1931)
153* Updated `php-cs-fixer` to `2.18.3` [#1915](https://github.com/ruflin/Elastica/pull/1915)
154* Updated `composer-normalize` to `2.13.3` [#1927](https://github.com/ruflin/Elastica/pull/1927)
155### Deprecated
156* Deprecated `Elastica\Transport\HttpAdapter` class [#1940](https://github.com/ruflin/Elastica/pull/1940)
157* Deprecated `Elastica\Exception\JSONParseException` exception, catch `\JsonException` instead [#1949](https://github.com/ruflin/Elastica/pull/1949)
158### Fixed
159* Fixed wrong `ltrim` usage in guzzle transport [#1783](https://github.com/ruflin/Elastica/pull/1783)
160* Fixed `_seq_no` and `_primary_term` wrong initialization [#1920](https://github.com/ruflin/Elastica/pull/1920)
161* Fixed `Elastica\Connection\StrategyInterface` instance checks [#1921](https://github.com/ruflin/Elastica/pull/1921)
162* Fixed various PHPDoc annotations [#1922](https://github.com/ruflin/Elastica/pull/1922)
163* Fixed numeric index names are returned as `int` in `Elastica\Status::getIndexNames()` [#1928](https://github.com/ruflin/Elastica/pull/1928)
164* Fixed using raw array in `post_filter` [#1950](https://github.com/ruflin/Elastica/pull/1950)
165
166## [7.1.0](https://github.com/ruflin/Elastica/compare/7.0.0...7.1.0)
167### Backward Compatibility Breaks
168* Added a default value to `Elastica\Aggregation\Range::setKeyed()` and `Elastica\Aggregation\PercentilesBucket::setKeyed()` [#1876](https://github.com/ruflin/Elastica/pull/1876)
169* Removed type-hint to `Elastica\Aggregation\Percentiles::setMissing()` argument [#1875](https://github.com/ruflin/Elastica/pull/1875)
170* Allowed the Terms query to accept an array of bool, float, int and/or string [#1872](https://github.com/ruflin/Elastica/pull/1872)
171### Added
172* Added `auth_type` parameter in the client class config to specify the type of authentication (allowed values are `basic, digest, gssnegotiate, ntlm`) [#1790](https://github.com/ruflin/Elastica/pull/1790)
173* Added `if_seq_no` / `if_primary_term` to replace `version` for [optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/optimistic-concurrency-control.html) [#1803](https://github.com/ruflin/Elastica/pull/1803)
174* Added `Elastica\Aggregation\PercentilesBucket` aggregation [#1806](https://github.com/ruflin/Elastica/pull/1806)
175* Added `weighted_avg` to aggregations DSL [#1814](https://github.com/ruflin/Elastica/pull/1814)
176* 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](https://github.com/ruflin/Elastica/pull/1808)
177* Added `Elastica\Aggregation\Composite` aggregation [#1804](https://github.com/ruflin/Elastica/pull/1804)
178* Added `symfony/deprecation-contracts` package to handle deprecations [#1823](https://github.com/ruflin/Elastica/pull/1823)
179* Added `list_syntax` CS rule [#1854](https://github.com/ruflin/Elastica/pull/1854)
180* Added `native_constant_invocation` CS rule [#1833](https://github.com/ruflin/Elastica/pull/1833)
181* Added `static_lambda` CS rule [#1870](https://github.com/ruflin/Elastica/pull/1870)
182* Added `Elastica\Aggregation\DateRange::setTimezone()` [#1847](https://github.com/ruflin/Elastica/pull/1847)
183* Added endpoint options support to `Elastica\Index::create()` [#1859](https://github.com/ruflin/Elastica/pull/1859)
184* Added `Elastica\Aggregation\DateHistogram::setKeyed()` [#1876](https://github.com/ruflin/Elastica/pull/1876)
185* Added `Elastica\Aggregation\GeoDistance::setKeyed()` [#1876](https://github.com/ruflin/Elastica/pull/1876)
186* Added `Elastica\Aggregation\Histogram::setKeyed()` [#1876](https://github.com/ruflin/Elastica/pull/1876)
187* Added `Elastica\Aggregation\IpRange::setKeyed()` [#1876](https://github.com/ruflin/Elastica/pull/1876)
188* Added `Elastica\Aggregation\GeotileGridAggregation` [#1880](https://github.com/ruflin/Elastica/pull/1880)
189* 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](https://github.com/ruflin/Elastica/pull/1876)
190* Supported `guzzlehttp/guzzle` 7.x [#1816](https://github.com/ruflin/Elastica/pull/1816)
191* Supported PHP 8.0 [#1794](https://github.com/ruflin/Elastica/pull/1794)
192* Supported BC break on `elasticsearch/elasticsearch` version `7.4.0` [#1864](https://github.com/ruflin/Elastica/pull/1864)
193### Changed
194* Allowed `string` such as `wait_for` to be passed to `AbstractUpdateAction::setRefresh` [#1791](https://github.com/ruflin/Elastica/pull/1791)
195* Allowed float values for connection timeout and connection connect-timeout, providing ms precision for those. Previous precision was second. [#1868](https://github.com/ruflin/Elastica/pull/1868)
196* Changed the return type of `AbstractUpdateAction::getRefresh` to `boolean|string` [#1791](https://github.com/ruflin/Elastica/pull/1791)
197* Reviewed options handling in `Elastica\Index::create()` [#1822](https://github.com/ruflin/Elastica/pull/1822)
198* Replaced deprecated `exceptions` request option by `http_errors` request option in Guzzle transport [#1817](https://github.com/ruflin/Elastica/pull/1817)
199* Run coding styles check on github action [#1878](https://github.com/ruflin/Elastica/pull/1878)
200* Run unit tests on github action [#1882](https://github.com/ruflin/Elastica/pull/1882)
201* Run functional tests on github action [#1885](https://github.com/ruflin/Elastica/pull/1885)
202* Updated `php-cs-fixer` to `2.16.4` [#1830](https://github.com/ruflin/Elastica/pull/1830)
203* Updated `php-cs-fixer` to `2.16.7` [#1881](https://github.com/ruflin/Elastica/pull/1881)
204* Updated `php-cs-fixer` to `2.17.3` [#1895](https://github.com/ruflin/Elastica/pull/1895)
205* Updated `php-cs-fixer` to `2.18.2` [#1897](https://github.com/ruflin/Elastica/pull/1897)
206* Used `GuzzleHttp\RequestOptions` constants for configuring request options [#1820](https://github.com/ruflin/Elastica/pull/1820)
207* Used new alias endpoints classes [#1839](https://github.com/ruflin/Elastica/pull/1839)
208* Used new cache endpoints classes [#1840](https://github.com/ruflin/Elastica/pull/1840)
209* Used new ingest pipeline endpoints classes [#1834](https://github.com/ruflin/Elastica/pull/1834)
210* Used new mapping endpoints classes [#1845](https://github.com/ruflin/Elastica/pull/1845)
211* Used new nodes endpoints classes [#1863](https://github.com/ruflin/Elastica/pull/1863)
212* Used new settings endpoints classes [#1852](https://github.com/ruflin/Elastica/pull/1852)
213### Deprecated
214* Deprecated `Elastica\Aggregation\Range::setKeyedResponse()`, use `setKeyed()` instead [#1848](https://github.com/ruflin/Elastica/pull/1848)
215* Deprecated `Elastica\Exception\ResponseException::getElasticsearchException()`, use `getResponse()::getFullError()` instead [#1829](https://github.com/ruflin/Elastica/pull/1829)
216* Deprecated `Elastica\QueryBuilder\DSL\Aggregation::global_agg()`, use `global()` instead [#1826](https://github.com/ruflin/Elastica/pull/1826)
217* Deprecated `Elastica\Util::getParamName()` [#1832](https://github.com/ruflin/Elastica/pull/1832)
218* Deprecated all Processor class names in favor of suffixed class names [#1893](https://github.com/ruflin/Elastica/pull/1893)
219* Deprecated Match query class and introduced MatchQuery instead for PHP 8.0 compatibility reason [#1799](https://github.com/ruflin/Elastica/pull/1799)
220* Deprecated `version`/`version_type` options [(deprecated in `6.7.0`)](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/docs-update.html) and added `if_seq_no` / `if_primary_term` that replaced it
221* Deprecated passing `bool` or `null` as 2nd argument to `Elastica\Index::create()` [#1828](https://github.com/ruflin/Elastica/pull/1828)
222### Removed
223* Removed HHVM proxy detection [#1818](https://github.com/ruflin/Elastica/pull/1818)
224### Fixed
225* Fixed issue [1789](https://github.com/ruflin/Elastica/issues/1789)
226* Fixed type-hint for `Elastica\QueryBuilder\DSL\Aggregation::sampler()` not consistent with the underlying constructor call [#1815](https://github.com/ruflin/Elastica/pull/1815)
227* Fixed `Elastica\Util::toSnakeCase()` with first letter being lower cased [#1831](https://github.com/ruflin/Elastica/pull/1831)
228* Fixed handling precision as string in `Elastica\Aggregation\GeohashGrid::setPrecision()` [#1884](https://github.com/ruflin/Elastica/pull/1884)
229* Fixed calling `Elastica\Aggregation\Composite::addAfter()` with the `null` value [1877](https://github.com/ruflin/Elastica/pull/1877)
230* Replaced `_routing` and `_retry_on_conflict` by `routing` and `retry_on_conflict` in `AbstractUpdateAction` [#1807](https://github.com/ruflin/Elastica/issues/1807)
231
232
233## [7.0.0](https://github.com/ruflin/Elastica/compare/7.0.0-beta.4...7.0.0)
234### Added
235* Added `Elastica\Aggregation\WeightedAvg` aggregation [#1770](https://github.com/ruflin/Elastica/pull/1770)
236
237### Changed
238* Added missing Response information to Bulk/ResponseSet [#1776](https://github.com/ruflin/Elastica/pull/1776)
239
240
241## [7.0.0-beta.4](https://github.com/ruflin/Elastica/compare/7.0.0-beta3...7.0.0-beta.4)
242### Backward Compatibility Breaks
243* 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/`.
244* The `Wildcard::setValue()` changed its signature: use it to set the value of the wildcard query only.
245* The `Wildcard` Query's constructor now requires the `name` and `value` properties.
246* The `Terms` Query's constructor now requires the `field` and `terms` properties.
247
248### Added
249* Added `AbstractTermsAggregation::setIncludeAsExactMatch()` [#1766](https://github.com/ruflin/Elastica/pull/1766)
250* Added `AbstractTermsAggregation::setExcludeAsExactMatch()` [#1766](https://github.com/ruflin/Elastica/pull/1766)
251* Added `AbstractTermsAggregation::setIncludeWithPartitions()` [#1766](https://github.com/ruflin/Elastica/pull/1766)
252* 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](https://github.com/ruflin/Elastica/pull/1752)
253* Added `Elastica\Reindex->setRefresh(string $value): void`. It accepts `REFRESH_*` constants from its class [#1752](https://github.com/ruflin/Elastica/pull/1752) and [#1758](https://github.com/ruflin/Elastica/pull/1758)
254* Added `Elastica\Reindex->setQuery(Elastica\Query\AbstractQuery $query): void` [#1752](https://github.com/ruflin/Elastica/pull/1752)
255* Added constants `PIPELINE`, `REFRESH_TRUE`, `REFRESH_FALSE`, `REFRESH_WAIT_FOR`, `SLICES` and `SLICES_AUTO` to `Elastica\Reindex` [#1752](https://github.com/ruflin/Elastica/pull/1752)
256* Added `Elastica\Pipeline->getId(): ?string` [#1752](https://github.com/ruflin/Elastica/pull/1752)
257* Added `Elastica\Aggregation\ExtendedStatsBucket` aggregation [#1756](https://github.com/ruflin/Elastica/pull/1756)
258
259### Changed
260* Changed `Terms::setTerms()` signature: it now accepts a list of strings only [#1765](https://github.com/ruflin/Elastica/pull/1765)
261* Changed `Terms::setTermsLookup()` signature: `index`, `path` and `id` are now required arguments [#1765](https://github.com/ruflin/Elastica/pull/1765)
262* Changed `Wildcard::setValue()` and constructor's signature: added more specific `Wildcard::setBoost()` and `Wildcard::setRewrite` methods
263* Updated PHP coding standards to adhere to PSR-12 [#1760](https://github.com/ruflin/Elastica/pull/1760)
264* Updated to PHPUnit v8.5 [#1759](https://github.com/ruflin/Elastica/pull/1759)
265* Refactored code structure: use `src/` and `tests/` folders [#1755](https://github.com/ruflin/Elastica/pull/1755)
266* Require elastica-php library >= v7.1.1, fixes an issue on Ingestion/Put() type-hinting
267* Require guzzle >= v6.3 as development library: fixes issues on PHP >= 7.2
268* Require phpunit >= v7.5, fixes deprecations in with PHP 7.3
269* Scroll is now throwing an exception when calling `current()` on an invalid iteration: always call `valid()` before
270    accessing the current item, as documented in PHP's Iterator documentation [#1749](https://github.com/ruflin/Elastica/pull/1749)
271
272### Removed
273* Removed unsupported `flags` from `AbstractTermsAggregation::setInclude()` [#1766](https://github.com/ruflin/Elastica/pull/1766)
274* Removed unsupported `flags` from `AbstractTermsAggregation::setExclude()` [#1766](https://github.com/ruflin/Elastica/pull/1766)
275* `Terms::setMinimumMatch()` has been removed as not supported by ES 7.x
276
277
278## [7.0.0-beta.3](https://github.com/ruflin/Elastica/compare/7.0.0-beta2...7.0.0-beta.3)
279* Marked Elastica 5.x as unmaintained
280
281### Bugfixes
282* Fix Search::count() not counting all results [#1746](https://github.com/ruflin/Elastica/pull/1746)
283* Fixed handling of Search::OPTION_SEARCH_IGNORE_UNAVAILABLE inside Scroll object
284
285### Added
286* Added `DiversifiedSampler` aggregation [#1735](https://github.com/ruflin/Elastica/pull/1735)
287* Added `\Elastica\Query\DistanceFeature` [#1730](https://github.com/ruflin/Elastica/pull/1730)
288* Added support for injecting a callable AWS credential provider to use static, cached, or custom-sourced credentials [#1667](https://github.com/ruflin/Elastica/pull/1667)
289
290### Improvements
291* Scroll releases previous ResultSet from memory before calling ES for next data batch [#1740](https://github.com/ruflin/Elastica/pull/1740)
292
293
294## [7.0.0-beta2](https://github.com/ruflin/Elastica/compare/7.0.0-beta1...7.0.0-beta2)
295
296### Backward Compatibility Breaks
297
298* The method `Index::deleteById()` does not throw an `NotFoundException` when deleting a non-existing document [#1732](https://github.com/ruflin/Elastica/pull/1732)
299* The class `\Elastica\QueryBuilder\Version\Version240` has been moved to `\Elastica\QueryBuilder\Version\Version700` [#1693](https://github.com/ruflin/Elastica/pull/1693)
300* Dropped support for PHP 7.1 [#1703](https://github.com/ruflin/Elastica/pull/1703)
301
302### Bugfixes
303
304* Renamed `\Elastica\Suggest\Term` deprecated option `prefix_len` to `prefix_length` [#1707](https://github.com/ruflin/Elastica/pull/1707)
305* The `\Elastica\Query\GeoPolygon::count()` method now returns the count of points passed to the filter [#1696](https://github.com/ruflin/Elastica/pull/1696)
306* Fix issue in `\Elastica\Client::request()` which causes request data to not be sent to the logger [#1682](https://github.com/ruflin/Elastica/pull/1682)
307
308### Added
309
310* Added `geo_bounding_box`, `geo_polygon`, `match_phrase`, `match_phrase_prefix`, `match_none` to `\Elastica\QueryBuilder\Version\Version700` [#1702](https://github.com/ruflin/Elastica/pull/1702)
311* Added `\Elastica\ResultSet::getTotalHitsRelation()` to get relation for total hits [#1694](https://github.com/ruflin/Elastica/pull/1694)
312* Added `Sampler` aggregation [#1688](https://github.com/ruflin/Elastica/pull/1688)
313
314### Improvements
315
316* Launched tests with PHP 7.4 [#1704](https://github.com/ruflin/Elastica/pull/1704)
317* Launched local tests with PHP 7.2 by default [#1725](https://github.com/ruflin/Elastica/pull/1725)
318* Added `nullable_type_declaration_for_default_null_value`, `no_alias_functions` CS rules [#1706](https://github.com/ruflin/Elastica/pull/1706)
319* Configured `visibility_required` CS rule for constants [#1723](https://github.com/ruflin/Elastica/pull/1723)
320* Added `Collapse` DSL to `QueryBuilder` [#1724](https://github.com/ruflin/Elastica/pull/1724)
321
322
323## [7.0.0-beta1](https://github.com/ruflin/Elastica/compare/6.1.1...7.0.0-beta1)
324
325### Backward Compatibility Breaks
326* The class `\Elastica\Type\Mapping` has been moved to `\Elastica\Mapping` [#1666](https://github.com/ruflin/Elastica/pull/1666)
327* The `\Elastica\Query::$_suggest` property has been renamed to `$hasSuggest` and is now private, it should not be used from extending classes [#1679](https://github.com/ruflin/Elastica/pull/1679)
328* `\Elastica\Document` expects a string as ID, not an int [#1672](https://github.com/ruflin/Elastica/pull/1672).
329* Removed `\Elastica\Query\GeohashCell` query, use `\Elastica\Query\GeoBoundingBox` instead [#1672](https://github.com/ruflin/Elastica/pull/1672).
330* Deprecated usage of `\Elastica\Type` class, `\Elastica\Index` class must be used instead [#1666](https://github.com/ruflin/Elastica/pull/1666)
331* Removed `\Elastica\Type` class, `\Elastica\Index` class must be used instead [#1666](https://github.com/ruflin/Elastica/pull/1666)
332* Forced index names to string in `\Elastica\Index::__construct()` [#1666](https://github.com/ruflin/Elastica/pull/1666)
333* Removed Type query `\Elastica\Query\Type` [#1666](https://github.com/ruflin/Elastica/pull/1666)
334* Removed `Elastica\Type` class, `Elastica\Index` class must be used instead [#1666](https://github.com/ruflin/Elastica/pull/1666)
335* Removed `type` handling from `Elastica\Search` class [#1666](https://github.com/ruflin/Elastica/pull/1666)
336* Removed `type` handling from `Elastica\Bulk` and `Elastica\Bulk\Action` classes [#1666](https://github.com/ruflin/Elastica/pull/1666)
337* Forced index names to string in `Elastica\Index::__construct()` [#1666](https://github.com/ruflin/Elastica/pull/1666)
338* Removed Type query `Elastica\Query\Type` [#1666](https://github.com/ruflin/Elastica/pull/1666)
339* Dropped support for PHP 7.0
340* \Elastica\AbstractUpdateAction::getOptions( $fields ) no longer supports the $underscore parameter, option names must match what elasticsearch expects.
341* Removed no longer supported \Elastica\Query\QueryString::setAutoGeneratePhraseQueries( $bool ) [#1622](https://github.com/ruflin/Elastica/pull/1622)
342* Replaced [params._agg](https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#_replaced_literal_params__agg_literal_with_literal_state_literal_context_variable_in_scripted_metric_aggregations) with state context variable in scripted metric aggregations
343* [Camel Case](https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#_camel_case_and_underscore_parameters_deprecated_in_6_x_have_been_removed) and underscore parameters deprecated in 6.x have been removed
344* The parameter [fields](https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#_the_parameter_literal_fields_literal_deprecated_in_6_x_has_been_removed_from_bulk_request) deprecated in 6.x has been removed from Bulk requestedit and Update request.
345* The [_parent](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-parent-field.html) field has been removed in favour of the join field.
346* hits.total is now an object in the search response [hits.total](https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html#_literal_hits_total_literal_is_now_an_object_in_the_search_response)
347* Elastica\Reindex does not return an Index anymore but a Response.
348* Elastica\Reindex->run() does not refresh the new Index after completion anymore. Use `$reindex->setParam(Reindex::REFRESH, 'wait_for')` instead.
349* `Elastica\Search->search()` and `Elastica\Search->count()` use request method `POST` by default. Same for `Elastica\Index`, `Elastica\Type\AbstractType`, `Elastica\Type`.
350* Elastica\Client `$_config` field is now a `ClientConfiguration` instead of an array
351* Removed `\Elastica\Client::_log`, `\Elastica\Log` and the `log` configuration option. Use the `Psr\Log\LoggerInterface $logger` client argument to customize logging.
352* Changed all factory methods to make use of [late static bindings](http://docs.php.net/manual/en/language.oop5.late-static-bindings.php) by using `static` instead of `self` keyword. This is to increase extendability for classes with factory methods.
353
354
355### Bugfixes
356
357* Always set the Guzzle `base_uri` to support connecting to multiple ES hosts. [#1618](https://github.com/ruflin/Elastica/pull/1618)
358* Properly handle underscore prefixes in options and bulk request metadata ([cf upstream](https://github.com/elastic/elasticsearch/issues/26886). [#1621](https://github.com/ruflin/Elastica/pull/1621)
359* Preserve zeros while doing float serialization to JSON. [#1635](https://github.com/ruflin/Elastica/pull/1635)
360* Add ```settings``` level on json to create an Index in all tests (it worked till 6.x but it shouldn't work)
361
362
363### Added
364
365* support for elasticsearch-php ^7.0
366* Added `ParentAggregation` [#1616](https://github.com/ruflin/Elastica/pull/1616)
367* Elastica\Reindex missing options (script, remote, wait_for_completion, scroll...)
368* Added `AdjacencyMatrix` aggregation [#1642](https://github.com/ruflin/Elastica/pull/1642)
369* Added request method parameter to `Elastica\SearchableInterface->search()` and `Elastica\SearchableInterface->count()`. Same for `Elastica\Search`[#1441](https://github.com/ruflin/Elastica/issues/1441)
370* Added support for Field Collapsing (Issue: [#1392](https://github.com/ruflin/Elastica/issues/1392); PR: [#1653](https://github.com/ruflin/Elastica/pull/1653))
371* Support string DSN in `\Elastica\Client` constructor for config argument [#1640](https://github.com/ruflin/Elastica/issues/1640)
372* Move Client configuration in a dedicated class
373* Added `callable` type hinting to `$callback` in `Client` constructor. [#1659](https://github.com/ruflin/Elastica/pull/1659)
374* Added `setTrackTotalHits` method to `Elastica\Query`[#1663](https://github.com/ruflin/Elastica/issues/1663)
375* Allow metadata to be set on Aggregations (via `AbstractAggregation::setMeta(array)`). [#1677](https://github.com/ruflin/Elastica/issues/1677)
376
377
378### Improvements
379
380* Added `native_function_invocation` CS rule [#1606](https://github.com/ruflin/Elastica/pull/1606)
381* Elasticsearch test version changed from 6.5.2 to 6.6.1 [#1620](https://github.com/ruflin/Elastica/pull/1620)
382* Clear scroll context also when empty page was received [#1660](https://github.com/ruflin/Elastica/pull/1660)
383
384
385## [6.1.1](https://github.com/ruflin/Elastica/compare/6.1.0...6.1.1)
386
387### Added
388
389* The preferred type name is [_doc](https://www.elastic.co/guide/en/elasticsearch/reference/6.5/removal-of-types.html), so that index APIs have the same path as they will have in 7.0
390* Added `BucketSelector` aggregation [#1554](https://github.com/ruflin/Elastica/pull/1554)
391* Added `DerivativeAggregation` [#1553](https://github.com/ruflin/Elastica/pull/1553)
392* The preferred type name is [_doc](https://www.elastic.co/guide/en/elasticsearch/reference/6.5/removal-of-types.html), so that index APIs have the same path as they will have in 7.0
393* Introduced new version of PHP-CS-Fixer and new Lint travis step. [#1555](https://github.com/ruflin/Elastica/pull/1555)
394* Added `typed_keys` support for Search queries [#1603](https://github.com/ruflin/Elastica/pull/1603)
395
396### Improvements
397
398* Reduced memory footprint of response by not keeping the raw JSON data when JSON after JSON has been parsed. [#1588](https://github.com/ruflin/Elastica/pull/1588)
399
400### Deprecated
401* Index templates use index_patterns instead of [template](https://www.elastic.co/guide/en/elasticsearch/reference/6.5/breaking-changes-6.0.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal)
402
403## [6.1.0](https://github.com/ruflin/Elastica/compare/6.0.2...6.1.0)
404
405### Backward Compatibility Breaks
406
407* 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](https://github.com/ruflin/Elastica/pull/1506)
408  * `\Elastica\ResultSet::next` returns `void` instead of `\Elastica\Result|false`
409  * `\Elastica\Bulk\ResponseSet::current` returns `\Elastica\Bulk\Response` instead of `\Elastica\Bulk\Response|false`
410  * `\Elastica\Multi\ResultSet::current` returns `\Elastica\ResultSet` instead of `\Elastica\ResultSet|false`
411
412### Added
413
414* Added a transport class for mocking a HTTP 403 error codes, useful for testing response failures in inheriting clients [#1529](https://github.com/ruflin/Elastica/pull/1529)
415* [Field](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-random) param for `Elastica\Query\FunctionScore::addRandomScoreFunction` [#1529](https://github.com/ruflin/Elastica/pull/1529)
416* [Index Recovery](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-recovery.html) : the indices recovery API provides insight into on-going index shard recoveries. It was never been implemented into Elastica. [#1537](https://github.com/ruflin/Elastica/pull/1537)
417* add parent_id (reference [#1518](https://github.com/ruflin/Elastica/issues/1518)) in QueryBuilder. [#1533]([#1518](https://github.com/ruflin/Elastica/issues/1533))
418* implemented ```string_distance``` option in Term Suggestion [#1543](https://github.com/ruflin/Elastica/pull/1543)
419
420### Improvements
421
422* Using `Elastica\Query\FunctionScore::addRandomScoreFunction` without `$field` parameter is deprecated since ES 6.0 and will fail since ES 7.0 [#1522](https://github.com/ruflin/Elastica/pull/1522)
423* `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](https://github.com/elastic/elasticsearch/pull/28305), so updated tests in order not to fail. [#1531]([#1352](https://github.com/ruflin/Elastica/pull/1531))
424* `Aggregation\Percentiles` have been updated since [Elasticsearch 2.3](https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-aggregations-metrics-percentile-aggregation.html). In this version `compression, HDR histogram` changed their implementations. The `missing` field has never been implemented. [#1532](https://github.com/ruflin/Elastica/pull/1532)
425
426  Before
427  ```json
428    "compression" : 200,
429    "method" : "hdr",
430    "number_of_significant_value_digits" : 3
431  ```
432
433  Now
434  ```json
435    "tdigest": {
436      "compression" : 200
437    },
438    "hdr": {
439      "number_of_significant_value_digits" : 3
440    }
441  ```
442
443* Never implemented the method *Missing* on [`Aggregation\Percentiles`](https://www.elastic.co/guide/en/elasticsearch/reference/6.4/search-aggregations-metrics-percentile-aggregation.html) [#1532](https://github.com/ruflin/Elastica/pull/1532)
444
445## [6.0.2](https://github.com/ruflin/Elastica/compare/6.0.1...6.0.2)
446
447### Added
448
449* Added support for pipeline when indexing document. [#1455](https://github.com/ruflin/Elastica/pull/1455)
450* Added support for multiple bucket sort orders for aggregations. [#1480](https://github.com/ruflin/Elastica/pull/1480)
451* Added basic support for the Elasticsearch Task Api
452* Added updateByQuery endpoint. [#1499](https://github.com/ruflin/Elastica/pull/1499)
453
454### Improvements
455
456* Use `source` script field instead of deprecated (since ES 5.6) `inline` field. [#1497](https://github.com/ruflin/Elastica/pull/1497)
457* Updated Elasticsearch testing version to 6.2.4. [#1501](https://github.com/ruflin/Elastica/pull/1501)
458
459
460## [6.0.1](https://github.com/ruflin/Elastica/compare/6.0.0...6.0.1)
461
462### Bugfixes
463- Characters "<" and ">" will be removed when a query term is passed to [`Util::escapeTerm`](https://github.com/ruflin/Elastica/pull/1415/files). Since v5.1 the [documentation](https://www.elastic.co/guide/en/elasticsearch/reference/5.1/query-dsl-query-string-query.html#_reserved_characters) states that these symbols cannot be escaped ever.
464- Remove [`each()`](http://www.php.net/each) usage to fix PHP 7.2 compatibility
465- Fix [#1435](https://github.com/ruflin/Elastica/issues/1435) forcing `doc_as_upsert` to be boolean, acording [Elastic doc-update documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_literal_doc_as_upsert_literal)
466- Fix [#1456](https://github.com/ruflin/Elastica/issues/1456) set SSL as connection scheme if it is required
467
468### Added
469
470* Added request parameters to `Client->deleteDocuments()`. [#1419](https://github.com/ruflin/Elastica/pull/1419)
471* Added request parameters to `Type->updateDocuments()`, `Type->addDocuments()`, `Type->addObjects()`, `Index->addDocuments()`, `Index->updateDocuments()`. [#1427](https://github.com/ruflin/Elastica/pull/1427)
472* Added avg_bucket() and sum_bucket() in aggregations [PR#1443](https://github.com/ruflin/Elastica/pull/1443) - (https://github.com/ruflin/Elastica/issues/1279)
473* Added support for [terms lookup mechanism](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html#query-dsl-terms-lookup) on terms query [#1452](https://github.com/ruflin/Elastica/pull/1452)
474
475
476## [6.0.0](https://github.com/ruflin/Elastica/compare/6.0.0-beta1...6.0.0)
477
478### Backward Compatibility Breaks
479- Return the [_source of inner hit nested](https://github.com/elastic/elasticsearch/pull/26982) as is without wrapping it into its full path context [#1398](https://github.com/ruflin/Elastica/pull/1398)
480- Removed CrossIndex Class as from now use Reindex. [#1411](https://github.com/ruflin/Elastica/pull/1411)
481
482### Added
483
484- Added clear() to `Scroll` for closing search context on ES manually
485- Added Elastica\Aggregation\StatsBucket
486
487### Improvements
488
489- Clear search context on ES after usage in `Scroll`
490
491
492## [6.0.0-beta1](https://github.com/ruflin/Elastica/compare/5.3.0...6.0.0-beta1)
493
494### Backward Compatibility Breaks
495
496- Numeric to and from parameters in [date_range aggregation](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_aggregations_changes.html#_numeric_literal_to_literal_and_literal_from_literal_parameters_in_literal_date_range_literal_aggregation_are_interpreted_according_to_literal_format_literal_now) are interpreted according to format of the target field
497- In ES6 only [strict type boolean](https://github.com/elastic/elasticsearch/pull/22200) are accepted. [On ES6 docs](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/boolean.html)
498- removed analyzed/not_analyzed on [indices mapping](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/mapping-index.html)
499- [store](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/mapping-store.html) field only accepts boolean
500- Replace IndexAlreadyExistsException with [ResourceAlreadyExistsException](https://github.com/elastic/elasticsearch/pull/21494) [#1350](https://github.com/ruflin/Elastica/pull/1350)
501- in order to delete an index you should not delete by its alias now you should delete using the [concrete index name](https://github.com/elastic/elasticsearch/blob/6.0/core/src/test/java/org/elasticsearch/aliases/IndexAliasesIT.java#L445) [#1348](https://github.com/ruflin/Elastica/pull/1348)
502- Removed ```optimize``` from Index class as it has been deprecated in ES 2.1 and removed in [ES 5.x+](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/indices-optimize.html) use forcemerge [#1351](https://github.com/ruflin/Elastica/pull/1350)
503- In QueryString is not allowed to use fields parameters in conjunction with default_field parameter. This is not well documented, it's possibile to understand from [Elasticsearch tests :  QueryStringQueryBuilderTests.java](https://github.com/elastic/elasticsearch/blob/6.0/core/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java#L917) [#1352](https://github.com/ruflin/Elastica/pull/1352)
504- Index mapping field of type [*'string'*](https://www.elastic.co/guide/en/elasticsearch/reference/5.5/string.html) has been removed from Elasticsearch 6.0 codebase [#1353](https://github.com/ruflin/Elastica/pull/1353)
505- The [created and found](https://github.com/elastic/elasticsearch/pull/25516) fields in index and delete responses became obsolete after the introduction of the result field in index, update and delete responses [#1354](https://github.com/ruflin/Elastica/pull/1354)
506- Removed file scripts [#24627](https://github.com/elastic/elasticsearch/pull/24627) [#1364](https://github.com/ruflin/Elastica/pull/1364)
507- Removed [groovy script](https://github.com/elastic/elasticsearch/pull/21607) [#1364](https://github.com/ruflin/Elastica/pull/1364)
508- Removed [native script](https://github.com/elastic/elasticsearch/pull/24726) [#1364](https://github.com/ruflin/Elastica/pull/1364)
509- Removed old / removed script language support : javascript, python, mvel [#1364](https://github.com/ruflin/Elastica/pull/1364)
510- Disable [_all](https://github.com/elastic/elasticsearch/pull/22144) by default, disallow configuring _all on 6.0+ indices [#1365](https://github.com/ruflin/Elastica/pull/1365)
511- [Unfiltered nested source](https://github.com/elastic/elasticsearch/pull/26102) should keep its full path [#1366](https://github.com/ruflin/Elastica/pull/1366)
512- The deprecated minimum_number_should_match parameter in the bool query has been removed, use minimum_should_match instead. [#1369](https://github.com/ruflin/Elastica/pull/1369)
513- For geo_distance queries, sorting, and aggregations the sloppy_arc option has been removed from the distance_type parameter. [#1369](https://github.com/ruflin/Elastica/pull/1369)
514- The geo_distance_range query, which was deprecated in 5.0, has been removed. [#1369](https://github.com/ruflin/Elastica/pull/1369)
515- The optimize_bbox parameter has been removed from geo_distance queries. [#1369](https://github.com/ruflin/Elastica/pull/1369)
516- The disable_coord parameter of the bool and common_terms queries has been removed. If provided, it will be ignored and issue a deprecation warning. [#1369](https://github.com/ruflin/Elastica/pull/1369)
517- [Unfiltered nested source](https://github.com/elastic/elasticsearch/pull/26102) should keep its full path [#1366](https://github.com/ruflin/Elastica/pull/1366)
518- [Analyze Explain](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_explain_analyze.html) no more support [request parameters](https://www.elastic.co/guide/en/elasticsearch/reference/5.5/indices-analyze.html), use request body instead. [#1370](https://github.com/ruflin/Elastica/pull/1370)
519- [Mapper Attachment plugin has been removed](https://github.com/elastic/elasticsearch/pull/20416) Use Ingest-attachment plugin and attachment processors with pipeline to ingest new documents. [#1375](https://github.com/ruflin/Elastica/pull/1375)
520- [Indices](https://github.com/elastic/elasticsearch/pull/21837) Query has been removed in Elasticsearch 6.0 [#1376](https://github.com/ruflin/Elastica/pull/1376)
521- Remove deprecated [type and slop](https://github.com/elastic/elasticsearch/pull/26720) field in match query [#1382](https://github.com/ruflin/Elastica/pull/1382)
522- Remove [several parse field](https://github.com/elastic/elasticsearch/pull/26711) deprecations in query builders [#1382](https://github.com/ruflin/Elastica/pull/1382)
523- Remove [deprecated parameters](https://github.com/elastic/elasticsearch/pull/26508) from ids_query [#1382](https://github.com/ruflin/Elastica/pull/1382)
524- Implemented [join-datatype](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) is a special field that creates parent/child relation within documents of the same index. [#1383](https://github.com/ruflin/Elastica/pull/1383)
525
526### Bugfixes
527- Enforce [Content-Type requirement on the layer Rest](https://github.com/elastic/elasticsearch/pull/23146), a [PR on Elastica #1301](https://github.com/ruflin/Elastica/issues/1301) solved it (it has been implemented only in the HTTP Transport), but it was not implemented in the Guzzle Transport. [#1349](https://github.com/ruflin/Elastica/pull/1349)
528- 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.
529
530### Added
531
532- Added `Query\SpanContaining`, `Query\SpanWithin` and `Query\SpanNot` [#1319](https://github.com/ruflin/Elastica/pull/1319)
533- Implemented [Pipeline](https://www.elastic.co/guide/en/elasticsearch/reference/current/pipeline.html) and [Processors](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-processors.html). [#1373](https://github.com/ruflin/Elastica/pull/1373)
534- 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](https://github.com/ruflin/Elastica/pull/1378)
535
536
537## [5.3.0](https://github.com/ruflin/Elastica/compare/5.2.1...5.3.0)
538
539### Backward Compatibility Breaks
540
541- Removed `Query\NumericRange`, use `Query\Range` instead [#1334](https://github.com/ruflin/Elastica/pull/1334)
542
543### Bugfixes
544
545- Send the `scroll_id` inside a json body instead of plain text [#1325](https://github.com/ruflin/Elastica/pull/1325)
546
547### Added
548 - Added getNumberOfReplicas() for index settings [PR#1324](https://github.com/ruflin/Elastica/pull/1324)
549 - Added getNumberOfShards() for index settings [PR#1321](https://github.com/ruflin/Elastica/pull/1331)
550 - Added `\Elastica\Query\Span*` for proximity searches [#304](https://github.com/ruflin/Elastica/issues/304)
551 - Added avg_bucket() and sum_bucket() in aggregations [PR#1443](https://github.com/ruflin/Elastica/pull/1443) - (https://github.com/ruflin/Elastica/issues/1279)
552
553
554## [5.2.1](https://github.com/ruflin/Elastica/compare/5.2.0...5.2.1)
555
556### Bugfixes
557
558- Fix elastic 5.3.x deprecation warning related to Content-Type not being set.
559- Fix updating settings of an index. [#1296](https://github.com/ruflin/Elastica/pull/1296)
560- 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
561- Fix bad parameter value to refresh document [#1318](https://github.com/rufli/Elastica/pull/1318)
562
563### Added
564
565 - Parameter `filter_path` for response filtering (e.g. `$index->search($query, ['filter_path' => 'hits.hits._source'])`)
566 - 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)
567 - 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](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#merging-conflicts)
568 - Added `\Elastica\Query\ParentId` to avoid join with parent documents [#1287](https://github.com/ruflin/Elastica/issues/1287)
569 - Added `\Elastica\Reindex` for reindexing between indices [#1311](https://github.com/ruflin/Elastica/issues/1311)
570
571### Improvements
572
573 - Added support for `other_bucket` and `other_bucket_key` paramters on `Elastica\Aggregation\Filters`
574 - Update elasticsearch testing dependency to 5.4.1
575
576### Deprecated
577 - Deprecated `Tool\CrossIndex` use `\Elastica\Reindex` instead [#1311](https://github.com/ruflin/Elastica/issues/1311)
578
579## [5.2.0](https://github.com/ruflin/Elastica/compare/5.1.0...5.2.0)
580
581### Bugfixes
582
583- Fix reading bool index settings like `\Elastica\Index\Settings::getBlocksWrite`. Elasticsearch returns all settings as strings and does not normalize bool values.
584  The getters now return the right bool value for whichever string representation is used like 'true', '1', 'on', 'yes'. [#1251](https://github.com/ruflin/Elastica/pull/1251)
585- Fix for QueryBuilder version check `\Elastica\QueryBuilder\Version\Version240.php` added all new query types to queries array. [#1266](https://github.com/ruflin/Elastica/pull/1266) [#1269](https://github.com/ruflin/Elastica/pull/1269)
586- Do not modify the original query in `\Elastica\Search::count`. [#1276](https://github.com/ruflin/Elastica/pull/1276)
587
588### Added
589
590- Added `\Elastica\Client::requestEndpoint`, `\Elastica\Index::requestEndpoint`, `\Elastica\Type::requestEndpoint` that allow make requests with official client Endpoint usage. [#1275](https://github.com/ruflin/Elastica/pull/1275)
591- Added `\Elastica\Aggregation\GeoBounds` that computes the bounding box containing all geo_point values for a field. [#1271](https://github.com/ruflin/Elastica/pull/1271)
592- Added `\Elastica\Query\MatchNone` the inverse of MatchAll. [#1276](https://github.com/ruflin/Elastica/pull/1276)
593
594### Improvements
595
596- added support for the "explain" flag of AnalyzeAPI [#1254](https://github.com/ruflin/Elastica/pull/1254)
597- added support for the "request_cache" search option [#1243](https://github.com/ruflin/Elastica/pull/1243)
598- skip sending "retry_on_conflict=0" default query param to improve compatibility with Amazon Elasticsearch [#1047](https://github.com/ruflin/Elastica/pull/1047)
599- optimized `\Elastica\Scroll` to avoid one request [#1273](https://github.com/ruflin/Elastica/pull/1273)
600- Update elasticsearch-php dependency to 5.2.0 [#1245](https://github.com/ruflin/Elastica/pull/1245)
601- Update elasticsearch testing dependency to 5.2.2 [#1245](https://github.com/ruflin/Elastica/pull/1245)
602
603### Deprecated
604
605- Deprecated `\Elastica\Exception\ElasticsearchException` which is irrelevant since Elasticsearch now exposes the errors as a structured array instead of a single string.
606  Use `\Elastica\Exception\ResponseException::getResponse::getFullError` instead.
607- 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.
608  Use `prefix_length` & `min_word_length` instead [#1282](https://github.com/ruflin/Elastica/pull/1282)
609  Use `\Elastica\Exception\ResponseException::getResponse::getFullError` instead. [#1251](https://github.com/ruflin/Elastica/pull/1251)
610
611## [5.1.0](https://github.com/ruflin/Elastica/compare/5.0.0...5.1.0)
612
613### Backward Compatibility Breaks
614
615- `\Elastica\Script\AbstractScript` added the script language as constructor argument and sub-classes must implement `getScriptTypeArray`
616
617### Bugfixes
618
619- Removed features that do not exist in Elasticsearch 5.0 anymore:
620  - `ttl` and `timestamp` logic: setters and getters in documents and mapping
621  - `\Elastica\Query\Missing`: negate `\Elastica\Query\Exists` instead
622  - `\Elastica\Query\TopChildren`
623- `\Elastica\Query\MatchPhrase` and `\Elastica\Query\MatchPhrasePrefix` do not extend `\Elastica\Query\Match` anymore because they do not share exactly the same options
624- 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.
625- Fix `relation` property of `\Elastica\Query\GeoShapeProvided`
626- repoint `\Elastica\Type::exists` from the deprecated /{index}/{type} endpoint to /{index}/_mapping/{type}
627
628### Added
629
630- added `\Elastica\Script\ScriptId` to reference stored scripts by ID
631- added `\Elastica\Query\AbstractGeoShape::RELATION_WITHIN`
632- Date math in index names is now escaped in URI
633- Added a check for paths that already have date math escaped
634
635### Improvements
636
637- `\Elastica\Query\HasParent` to use `parent_type` instead of `type`. Fixes warning due to field being deprecated.
638
639### Deprecated
640
641- Deprecated functionality that is also deprecated in Elasticsearch 5.0:
642  - `\Elastica\Client::optimizeAll` in favor of `\Elastica\Client::forcemergeAll`
643  - `\Elastica\Query\BoolQuery::setMinimumNumberShouldMatch` in favor of `\Elastica\Query\BoolQuery::setMinimumShouldMatch`
644  - `\Elastica\Query\GeoDistanceRange`: use distance aggregations or sorting instead
645  - `\Elastica\Query\GeohashCell`
646  - `\Elastica\Query\Indices`: search on the `_index` field instead
647  - `\Elastica\Query\Match::setFieldType`: use `\Elastica\Query\MatchPhrase` and `\Elastica\Query\MatchPhrasePrefix` instead
648- `\Elastica\Transport\Null` is deprecated because null is a reserved class name in PHP 7. Use `\Elastica\Transport\NullTransport` instead.
649
650## [5.0.0](https://github.com/ruflin/Elastica/compare/5.0.0-beta1...5.0.0)
651
652### Backward Compatibility Fixes
653- Updated Elastica\Test\Suggest\CompletionTest now payload and output are removed
654- Updated Elastica\Test\TypeTest::testGetDocumentWithFieldsSelection The stored_fields parameter will only return stored fields — it will no longer extract values from the _source
655- remove _shutdown for Node and Cluster as deprecated
656
657### Bugfixes
658- Query options such as "timeout" or "terminate_after" should not be ignored when using Multi\Search
659
660### Added
661- Added regex option form suggest completions https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html#regex
662
663### Improvements
664- `\Elastica\JSON` throws exception with readable message instead of errno
665- `\Elastica\JSON::stringify` throws `\Elastica\Exception\JSONParseException` on error
666
667
668## [5.0.0-beta1](https://github.com/ruflin/Elastica/compare/3.2.3...5.0.0-beta1)
669
670### Backward Compatibility Breaks
671- Update elasticsearch dependency to 5.0
672- Replace flush refresh param with a options array
673- Rename Mapping::setFields to Mapping::setStoredFields
674- Removing all deprecated filters including tests. Use queries instead.
675- Remove deprecated Elastica\Script*.php classes. Use Elastica\Script\* instead.
676- Remove Elastica/Query/Image.php and test/Elastica/Query/ImageTest.php, no more support for image-plugin.
677- Remove Elastica/Query/Filtered.php and test/Elastica/Query/FilteredTest.php and all uses from code.
678- Remove index.merge.policy.merge_factor, and set/get MergePolicy as it looks deprecated from ES 1.6
679- Add new "Percolate query" functionality and tests
680- Remove in Elastica\AbstractUpdateAction Option "percolate", getter and setter as deprecated as of ES 1.3. Use Percolator instead.
681- Remove in Elastica\Aggregation\DateHistogram Option "pre_zone" is deprecated as of ES 1.5. Use "time_zone" instead
682- Remove in Elastica\Aggregation\DateHistogram Option "post_zone" is deprecated as of ES 1.5. Use "time_zone" instead.
683- Remove in Elastica\Aggregation\DateHistogram Option "pre_zone_adjust_large_interval" is deprecated as of ES 1.5. Use "time_zone" instead.
684- Remove in Elastica\Aggregation\DateHistogram Option "pre_offset" is deprecated as of ES 1.5. Use "offset" instead.
685- Remove in Elastica\Aggregation\DateHistogram Option "post_offset" is deprecated as of ES 1.5. Use "offset" instead.
686- Remove Elastica\Document::add as deprecated. Use Elastica\Document::set instead
687- 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.
688- 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.
689- 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.
690- Remove Elastica/Query::setLimit as deprecated. Use the Elastica/Query::setSize() method
691- Remove Elastica\Query\Builder
692- Remove Elastica\Query\Fuzzy::addField as deprecated. Use Elastica\Query\Fuzzy::setField and Elastica\Query\FuzzysetFieldOption instead.
693- Remove Elastica\Query::setIds as deprecated. Use Elastica\Query::like instead.
694- Remove Elastica\Query::setLikeText as deprecated. Use Elastica\Query::like instead.
695- Remove Elastica\Query Option "percent_terms_to_match" is deprecated as of ES 1.5. Use "minimum_should_match" instead.
696- Remove Elastica\QueryBuilder\DSL\Query "More Like This Field" query is deprecated as of ES 1.4. Use MoreLikeThis query instead.
697- Changed visibility from protected to private Elastica\ResultSet::$_position as accessing this property in an extended class is deprecated.
698- Changed visibility from protected to private Elastica\ResultSet::$_response as accessing this property in an extended class is deprecated.
699- Changed visibility from protected to private Elastica\ResultSet::$_query as accessing this property in an extended class is deprecated.
700- Changed visibility from protected to private Elastica\ResultSet::$_results as accessing this property in an extended class is deprecated.
701- Removed Elastica\ResultSet::$_timedOut as deprecated. Use ResultSet->hasTimedOut() instead.
702- Removed Elastica\ResultSet::$_took as deprecated. Use ResultSet->hasTimedOut() instead.
703- Removed Elastica\ResultSet::$_totalHits as deprecated. Use ResultSet->hasTimedOut() instead.
704- 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.
705- Removed Elastica\Query\Builder as deprecated. Use new Elastica\QueryBuilder instead.
706- Removed Elastica\Percolator as deprecated. Use new Elastica\Query\Percolate instead.
707- Changed Elastica\Index::deleteByQuery() to use new API https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docs-delete-by-query.html
708- Remove Elastica\ScanAndScroll and test, Scan search type is removed from ElasticSearch 5.0.
709- Remove support for PHP 5.4 and 5.5. Require at least PHP 5.6 #1202
710- Remove groovy as default scripting language
711- Remove search_type=count as it is removed in Elasticsearch 5.0
712- Remove fielddata_fields as it has been deprecated in ES5, use parameter docvalue_fields instead
713
714### Added
715- Elastica\QueryBuilder\DSL\Query::exists
716- Elastica\QueryBuilder\DSL\Query::type
717
718### Improvements
719- Add a constant for the expression language.
720- `Health::getIndices` returns key=>value result, where key === $indexName.
721```
722$cluster->getHealth()->getIndices()[$indexName]
723// or
724$indices = $cluster->getHealth()->getIndices();
725$indices[$indexName]
726```
727- Added a `Query::setTrackScores` method
728- Implemented painless as default scripting language in tests
729- Updated Dockerfile and elasticsearch.yml to allow inline.script: true
730- Updated some Script function to use groovy as now default scripting is painless
731    - Elastica\Test\Aggregation\ScriptTest::testAggregationScript
732    - Elastica\Test\Aggregation\ScriptTest::testAggregationScriptAsString
733    - Elastica\Test\Query\FunctionScoreTest::testScriptScore
734    - Elastica\Test\BulkTest::testUpdate
735    - Elastica\Test\ClientTest::testUpdateDocumentByScript
736    - Elastica\Test\ClientTest::testUpdateDocumentByScriptWithUpsert
737    - Elastica\Test\ClientTest::testUpdateDocumentPopulateFields
738    - Elastica\Test\ClientTest::testUpdateDocumentPopulateFields
739    - Elastica\Test\TypeTest::testUpdateDocument
740    - Elastica\Test\TypeTest::testUpdateDocumentWithIdForwardSlashes
741    - Elastica\Test\TypeTest::testUpdateDocumentWithParameter
742    - Elastica\Test\TypeTest::testUpdateDocumentWithFieldsSource
743- Composer installations will no longer include tests and other development files.
744
745
746## [3.2.3](https://github.com/ruflin/Elastica/compare/3.2.2...3.2.3)
747
748### Bugfixes
749- Query builder is now compatible with Elasticsearch 2.X
750
751### Added
752- Elastica\Aggregation\BucketScript
753- Elastica\Aggregation\SerialDiff
754- Elastica\Query\InnerHits
755
756### Improvements
757- Elastica\Client constructor now accepts a transport of fully qualified name. [#1169](https://github.com/ruflin/Elastica/pull/1169)
758- Update Elasticsearch dependency to 2.4.0
759
760
761## [3.2.2](https://github.com/ruflin/Elastica/compare/3.2.1...3.2.2)
762
763### Backward Compatibility Fixes
764
765### Bugfixes
766- Set HTTP headers on each request preventing server error if persistent connection is enabled and compression enabled and later disabled for the same connection.
767- Removed `int` type hinting in `setMinimumMatch` (`Terms` Query): it should also allow `string`. [#1151](https://github.com/ruflin/Elastica/pull/1151)
768
769### Added
770- Elastica\QueryBuilder\DSL\Query::geo_distance
771- Elastica\Aggregation\GeoCentroid [#1150](https://github.com/ruflin/Elastica/pull/1150)
772- [Multi value field](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#_multi_values_fields) param for decay function.
773- Elastica\Client::getVersion [#1152](https://github.com/ruflin/Elastica/pull/1152)
774- Added support for terminate_after parameter in search queries [#1168](https://github.com/ruflin/Elastica/pull/1168)
775
776### Improvements
777- Set PHP 7.0 as default development version
778- Get the root reason from Elasticsearch's error JSON, when available [#1111](https://github.com/ruflin/Elastica/pull/1111)
779- Optimize memory usage for Http Adapter [#1161](https://github.com/ruflin/Elastica/pull/1161)
780
781### Changed
782- Remove JSON_ELASTICSEARCH constant as not needed anymore
783
784## [3.2.1](https://github.com/ruflin/Elastica/compare/3.2.0...3.2.1)
785
786### Backward Compatibility Fixes
787- Reintroduced properties in ResultSet removed in 3.2.0 as deprecated properties to be removed in 4.0
788
789### Bugfixes
790- Fix fatal error on `Query::addScriptField()` if scripts were already set via `setScriptFields()` [#1086](https://github.com/ruflin/Elastica/pull/1086)
791- Fix namespace collision of `Type` in `Query\Ids` [#1104](https://github.com/ruflin/Elastica/pull/1104)
792
793### Added
794- 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](https://github.com/ruflin/Elastica/pull/1066)
795- Tidied property initialisation in classes where it was duplicated
796
797## [3.2.0](https://github.com/ruflin/Elastica/compare/3.1.1...3.2.0)
798
799### Backward Compatibility Breaks
800- Method \Elastica\ResultSet::create and property \Elastica\ResultSet::$class were removed. To change the ResultSet class, implement your own ResultSet Builder. [#1065](https://github.com/ruflin/Elastica/pull/1065)
801- Properties on \Elastica\ResultSet _totalHits, _maxScore, _took and _timedOut that were originally set on object construction are now accessed by the getters on the ResultSet. [#1065](https://github.com/ruflin/Elastica/pull/1065)
802
803### Bugfixes
804- Fix php notice on `\Elastica\Index::getAliases()` if index has no aliases [#1078](https://github.com/ruflin/Elastica/issues/1078)
805
806### Added
807- Update elasticsearch build dependency to elasticsearch 2.3.2 [#1084](https://github.com/ruflin/Elastica/pull/1084)
808
809### Improvements
810- `Elastica\Type->deleteByQuery($query, $options)` $query param can be a query `array` again https://github.com/ruflin/Elastica/issues/1072 [#1073](https://github.com/ruflin/Elastica/pull/1073)
811- `Elastica\Client->connect()` allows to establish a connection to ES server when the config was set using method `Elastica\Client->setConfigValue()` https://github.com/ruflin/Elastica/issues/1076 [#1077](https://github.com/ruflin/Elastica/pull/1077)
812- Elastica\Client constructor now accepts a LoggerInterface and will log both successful and failed requests. [#1069](https://github.com/ruflin/Elastica/pull/1069)
813
814### Deprecated
815- Configuring the logger in \Elastica\Client $config constructor is deprecated and will be removed. Use the $logger argument instead. [#1069](https://github.com/ruflin/Elastica/pull/1069)
816- Extracted creation of ResultSet objects to a new dedicated ResultSet\Builder implementation. [#1065](https://github.com/ruflin/Elastica/pull/1065)
817- All properties in the \Elastica\ResultSet class will be moved to private in 4.0. To manipulate the creation of a ResultSet, implement the \Elastica\ResultSet\BuilderInterface and pass your new Builder to the \Elastica\Search instances. [#1065](https://github.com/ruflin/Elastica/pull/1065)
818
819
820## [3.1.1](https://github.com/ruflin/Elastica/compare/3.1.0...3.1.1)
821
822### Added
823- 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](https://github.com/ruflin/Elastica/pull/1056)
824- Update elasticsearch build dependency to elasticsearch 2.2.1
825
826### Improvements
827- `Elastica\Exception\InvalidException` will be thrown if you try using an
828  `Elastica\Aggregation\AbstractSimpleAggregation` without setting either the
829  `field` or `script` param.
830- `Elastica\Index->deleteByQuery($query, $options)` $query param can be a query `array` again
831- `Elastica\Query\MoreLikeThis->toArray()` now supports providing a non-indexed document as an input to perform the comparison.
832- `Elastica\Status` will lazy load the `_stats` at when it is needed. https://github.com/ruflin/Elastica/pull/1058
833
834
835## [3.1.0](https://github.com/ruflin/Elastica/compare/3.0.1...3.1.0)
836
837### Backward Compatibility Breaks
838- Update Guzzle transport to use Guzzle 6
839- Elastica\Query\FunctionScore::setFilter - deprecated and will throw DeprecatedException since not supported by Elasticsearch. Use setQuery instead.
840
841### Added
842- `Elastica\Result->getDocument` and `Elastica\ResultSet->getDocuments` for return `\Elastica\Document`. https://github.com/ruflin/Elastica/issues/960
843
844### Improvements
845- Add username and password params to connection
846
847### Deprecated
848- Elastica\AbstractScript|Script|ScriptFile|ScriptFields deprecated in favor of Elastica\Script|AbstractScript|Script|ScriptFile|ScriptFields [#1028](https://github.com/ruflin/Elastica/pull/1028)
849- 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
850
851## [3.0.1](https://github.com/ruflin/Elastica/compare/3.0.0...3.0.1)
852
853### Improvements
854- Update build dependency to elasticsearch 2.1.1 [#1022](https://github.com/ruflin/Elastica/pull/1022)
855- Readd \Elastica\Filter\Nested. See https://github.com/ruflin/Elastica/issues/1001 [#1020](https://github.com/ruflin/Elastica/pull/1020)
856
857
858## [3.0.0](https://github.com/ruflin/Elastica/compare/3.0.0-beta1...3.0.0)
859
860### Backward Compatibility Breaks
861- Revert getError changes in Response object and make it better BC compatible. See comment [here](https://github.com/ruflin/Elastica/commit/41a7a2075837320bc9bd3bca4150e05a1ec9a115#commitcomment-15136374).
862
863### Bugfixes
864- Function score query: corrected the `score_method` `average` to `avg` [#975](https://github.com/ruflin/Elastica/pull/975)
865- Set `json_decode()` assoc parameter to true in `Elastica\Response` [#1005](https://github.com/ruflin/Elastica/pull/1005)
866- Add `bigintConversion` to keys passed to connection config in `Elastica\Client` [#1005](https://github.com/ruflin/Elastica/pull/1005)
867- Use POST instead of PUT to send bulk requests [#1010](https://github.com/ruflin/Elastica/issues/1010)
868
869### Added
870- Elastica\Query\MultiMatch::setFuzziness now supports being set to `AUTO` with the const `MultiMatch::FUZZINESS_AUTO`
871- Elastica\Type\Mapping::send now accepts query string parameters to send along with the mapping request
872- Elastica\Query\BoolQuery::addFilter
873
874### Improvements
875- More info on Elastica\Exception\PartialShardFailureException. Not just number of failed shards.
876- Allow bool in TopHits::setSource function [#1012](https://github.com/ruflin/Elastica/issues/1012)
877
878### Deprecated
879- Elastica\Query\Filtered triggers E_USER_DEPRECATED error because filtered query is deprecated since ES 2.0.0-beta1. Use BoolQuery instead.
880- Elastica\QueryBuilder\DSL\Query::filtered() triggers E_USER_DEPRECATED error because filtered query is deprecated since ES 2.0.0-beta1. Use bool() instead.
881
882
883
884## [3.0.0-beta1](https://github.com/ruflin/Elastica/compare/2.3.1...3.0.0-beta1)
885
886### Backward Compatibility Breaks
887- Elastica\AbstractUpdateAction::setPercolate now throw DeprecatedException, user Percolator instead
888- Elastica\AbstractUpdateAction::getPercolate now throw DeprecatedException, user Percolator instead
889- Elastica\AbstractUpdateAction::hasPercolate now throw DeprecatedException, user Percolator instead
890- 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
891- MoreLikeThis::setLikeText deprecated from ES 2.0, use setLike instead, but there is a difference - setLike haven't trim magic inside for strings
892- Elastica\Document, methods: setScript, getScript, hasScript now throw DeprecatedException.
893- MoreLikeThis, methods: setLikeText, setIds, setPercentTermsToMatch now throw DeprecatedException.
894- Elastica\Aggregation\DateHistogram, methods: setPreZone, setPostZone, setPreZoneAdjustLargeInterval, setPreOffset, setPostOffset now throw DeprecatedException.
895- Elastica\Query\Builder trigger E_USER_DEPRECATED error when you try use it.
896- Elastica\Filter\Bool and Elastica\Query\Bool trigger E_USER_DEPRECATED error when you try use them.
897- Elastica\Query\Fuzzy:addField method trigger E_USER_DEPRECATED error
898- Elastica\Query\FunctionScore:addBoostFactorFunction method trigger E_USER_DEPRECATED error
899- Elastica\Query:setLimit method trigger E_USER_DEPRECATED error
900- Elastica\Document:add method trigger E_USER_DEPRECATED error
901- Type::moreLikeThis API was removed from ES 2.0, use MoreLikeThis query instead
902- Remove Thrift transport and everything related to it
903- Remove Memcache transport and everything related to it
904- Remove BulkUdp and everything related to it
905- Remove Facets and everything related to it
906- Remove ansible scripts for tests setup and Vagrantfile as not needed anymore.
907  All is based on docker containers now
908- Support for PHP 5.3 removed
909- Elastica\Reponse::getError() now returns and array instead of a string
910- Move function \Elastica\Index\Status::getAliases() and hasAlias(...) to \Elastica\Index::getAliases()
911- Remove \Elastica\Index\Status object and related functions
912- \Elastica\Query\FuzzyLikeThis remove as not supported anymore
913- Remove \Elastica\Status::getServerStatus() as the information was removed
914- DeleteByQuery now requires the delete-by-query plugin isntalled
915- Remove \Elastica\Filter\Nested as it is replaced by \Elastica\Query\Nested
916- Require at least PHP 5.4
917
918### Bugfixes
919- Fixed GeoShapeProvided relation parameter position
920
921### Added
922- Elastica\Reponse::getErrorMessage was added as getError is now an object
923- Elastica\Query\MoreLikeThis::setLike
924- \Elastica\Exception\DeprecatedException
925- Connection option to convert JSON bigint results to strings can now be set [#717](https://github.com/ruflin/Elastica/issues/717)
926
927### Improvements
928- Travis builds were moved to docker-compose setup. Ansible scripts and Vagrant files were removed
929- trigger_error with E_USER_DEPRECATE added to deprecated places
930- DeprecatedException will be thrown, if there is a call of method that not support BC
931
932### Deprecated
933- Elastica\Type::delete is deprecated
934- Elastica\Filter\Bool is deprecated
935- Elastica\Query\Bool is deprecated
936- Elastica\Query\MoreLikeThis::setLikeText is deprecated
937- Elastica\Query\MoreLikeThis::setIds is deprecated
938
939## [2.3.1](https://github.com/ruflin/Elastica/releases/tag/2.3.1) - 2015-10-17
940
941### Bugfixes
942- Filters aggregation: empty name is named bucket [#935](https://github.com/ruflin/Elastica/pull/935)
943- Prevent mix keys in filters ([#936](https://github.com/ruflin/Elastica/pull/936)) [#939](https://github.com/ruflin/Elastica/pull/939)
944- Fix empty string is not anonymous filter [#935](https://github.com/ruflin/Elastica/pull/935)
945- Filters aggregation: empty name is named bucket [#935](https://github.com/ruflin/Elastica/pull/935)
946
947### Added
948- Support for field_value_factor [#953](https://github.com/ruflin/Elastica/pull/953)
949- Added setMinDocCount and setExtendedBounds options [#947](https://github.com/ruflin/Elastica/pull/947)
950- Avoid environment dependecies in tests [#938](https://github.com/ruflin/Elastica/pull/938)
951
952### Improvements
953- Update elasticsearch dependency to elasticsearch 1.7.3 [#957](https://github.com/ruflin/Elastica/pull/957)
954
955### Deprecated
956- Added exceptions of deprecated transports to deprecation list
957
958
959## [2.3.0](https://github.com/ruflin/Elastica/releases/tag/2.3.0) - 2015-09-15
960
961
962### Backward Compatibility Breaks
963- Objects do not casts to arrays in setters and saved in params as objects. There is many side effects if
964  you work with params on "low-level" or change your objects after you call setter with object
965  as argument. [#916](https://github.com/ruflin/Elastica/pull/916)
966
967### Added
968- Add Script File feature [#902](https://github.com/ruflin/Elastica/pull/902) [#914](https://github.com/ruflin/Elastica/pull/914)
969
970### Improvements
971- Support the http.compression in the Http transport adapter [#515](https://github.com/ruflin/Elastica/issues/515)
972- Introduction of Lazy toArray [#916](https://github.com/ruflin/Elastica/pull/916)
973- Update Elasticsearch dependency to 1.7.2 [#929](https://github.com/ruflin/Elastica/pull/929)
974
975
976
977## [2.2.1](https://github.com/ruflin/Elastica/releases/tag/2.2.1) - 2015-08-10
978
979
980### Added
981- Support for index template added [#905](https://github.com/ruflin/Elastica/pull/905)
982
983### Improvements
984- Update Elasticsearch dependency to 1.7.1 and update plugin dependencies [#909](https://github.com/ruflin/Elastica/pull/909)
985- Update php-cs-fixer to 1.10 [#898](https://github.com/ruflin/Elastica/pull/898)
986- Elastica\QueryBuilder now uses Elastica\QueryBuilder\Version\Latest as default version to avoid empty version classes. [#897](https://github.com/ruflin/Elastica/pull/897)
987- Update elasticsearch-image to work with ES 1.7.1 [#907](https://github.com/ruflin/Elastica/pull/907)
988- Local dev environment was refactored to fully work in docker environment. Running tests is now only one command: `make tests` [#901](https://github.com/ruflin/Elastica/pull/901)
989
990### Deprecated
991- Elastica\QueryBuilder\Version\Version150 deprecated in favor of Elastica\QueryBuilder\Version\Latest [#897](https://github.com/ruflin/Elastica/pull/897)
992
993
994## [2.2.0](https://github.com/ruflin/Elastica/releases/tag/2.2.0) - 2015-07-08
995
996
997### Backward Compatibility Breaks
998- Usage of constant DEBUG and method Elastica\Util::debugEnabled is removed. [#868](https://github.com/ruflin/Elastica/pull/868)
999- Elastica\Response::getTransferInfo will not return "request_header" by default. [#868](https://github.com/ruflin/Elastica/pull/868)
1000- The Image Plugin is currently not compatible with Elasticearch 1.6.0
1001
1002### Bugfixes
1003- Fixed segmentation fault in PHP7 [#868](https://github.com/ruflin/Elastica/pull/868)
1004- Removed deprecation for Elastica\Type::deleteByQuery [#875](https://github.com/ruflin/Elastica/pull/875)
1005
1006### Improvements
1007- `CallbackStrategy` now will accept any `callable` as callback, not only instance of `Closure`. [#871](https://github.com/ruflin/Elastica/pull/871)
1008- `StrategyFactory` now will try to find predefined strategy before looking to global namespace. [#877](https://github.com/ruflin/Elastica/pull/877)
1009- Update elasticsearch dependency to elasticsearch 1.6.0 https://www.elastic.co/downloads/past-releases/elasticsearch-1-6-0
1010- All elasticsearch plugin dependencies were updated to the newest version.
1011- Methods of classes in `QueryBuilder\DSL` namespace now have exact same signatures as corresponding constructors. [#878](https://github.com/ruflin/Elastica/pull/878)
1012- Constructor of `Aggregation\Filter` now accepts filter as second parameter [#878](https://github.com/ruflin/Elastica/pull/878)
1013- Constructor of `Filter\AbstractMulti` (`BoolAnd`, `BooldOr`) now accepts array of filters as parameter [#878](https://github.com/ruflin/Elastica/pull/878)
1014- Constructor of `Query\Match` now accepts arguments [#878](https://github.com/ruflin/Elastica/pull/878)
1015- Coverage Reporting improved with Codecov [#888](https://github.com/ruflin/Elastica/pull/888)
1016- Added 'query_cache' option for search [#886](https://github.com/ruflin/Elastica/pull/886)
1017
1018## [2.1.0](https://github.com/ruflin/Elastica/releases/tag/2.1.0) - 2015-06-01
1019
1020### Added
1021- Multiple rescore query [#820](https://github.com/ruflin/Elastica/issues/820/)
1022- Support for a custom connection timeout through a connectTimeout parameter. [#841](https://github.com/ruflin/Elastica/issues/841/)
1023- SignificantTerms Aggregation [#847](https://github.com/ruflin/Elastica/issues/847/)
1024- Support for 'precision_threshold' and 'rehash' options for the Cardinality Aggregation [#851]
1025- Support for retrieving id node [#852](https://github.com/ruflin/Elastica/pull/852)
1026- Scroll Iterator [#842](https://github.com/ruflin/Elastica/issues/842/)
1027- Gitter Elastica Chat Room add for Elastica discussions: https://gitter.im/ruflin/Elastica
1028- Introduce PHP7 compatibility and tests. [#837](https://github.com/ruflin/Elastica/pull/837)
1029- `Tool\CrossIndex` for reindexing and copying data and mapping between indices [#853](https://github.com/ruflin/Elastica/pull/853)
1030- CONTIRUBTING.md file added for contributor guidelines. [#854](https://github.com/ruflin/Elastica/pull/854)
1031
1032### Improvements
1033- Introduction of Changelog standard based on http://keepachangelog.com/. changes.txt moved to CHANGELOG.md [#844](https://github.com/ruflin/Elastica/issues/844/)
1034- Make host for all tests dynamic to prepare it for a more dynamic test environment [#846](https://github.com/ruflin/Elastica/pull/846)
1035- Node information is retrieved based on id instead of name as multiple nodes can have the same name. [#852](https://github.com/ruflin/Elastica/pull/852)
1036- Guzzle Http dependency updated to 5.3.*
1037- Remove NO_DEV builds from travis build matrix to speed up building. All builds include no dev packages.
1038- Introduction of benchmark test group to make it easy to run benchmark tests.
1039- Make the docker images directly [available](https://hub.docker.com/u/ruflin/) on the docker registry. This speeds up fetching of the images and automates the build of the images.
1040
1041### Backward Compatibility Breaks
1042- `Elastica\ScanAndScroll::$_lastScrollId` removed: `key()` now always returns the next scroll id [#842](https://github.com/ruflin/Elastica/issues/842/)
1043
1044
1045### Deprecated
1046- Facets are deprecated. You are encouraged to migrate to aggregations instead. [#855](https://github.com/ruflin/Elastica/pull/855/)
1047- Elastica\Query\Builder is deprecated. Use new Elastica\QueryBuilder instead. [#855](https://github.com/ruflin/Elastica/pull/855/)
1048- 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](https://github.com/ruflin/Elastica/pull/837)
1049
1050
1051
1052## [2.0.0](https://github.com/ruflin/Elastica/releases/tag/2.0.0) - 2015-05-11
1053
1054
1055### Backward Compatibility Breaks
1056- Elastica\Query\QueryString::setLowercaseExpandedTerms removed [#813](https://github.com/ruflin/Elastica/issues/813/)
1057- Update elasticsearch dependency to elasticsearch 1.5.2 https://www.elastic.co/downloads/past-releases/elasticsearch-1-5-2 [#834](https://github.com/ruflin/Elastica/issues/834/)
1058- Added deprecation notice to Elastica\Transport\Thrift, Elastica\Transport\Memcached and Elastica\Type::deleteByQuery  [#817](https://github.com/ruflin/Elastica/issues/817/)
1059- Escape new symbols in Util::escapeTerm [#795](https://github.com/ruflin/Elastica/issues/795/)
1060
1061### Bugfixes
1062- Fix empty bool query to act as match all query [#817](https://github.com/ruflin/Elastica/issues/817/)
1063- Fixed short match construction in query DSL [#796](https://github.com/ruflin/Elastica/issues/796/)
1064- Index optimize method to return Response object. [#797](https://github.com/ruflin/Elastica/issues/797/)
1065- Fix fluent interface inconsistency [#788](https://github.com/ruflin/Elastica/issues/788/)
1066
1067
1068### Improvements
1069- Add testing on PHP 7 on Travis [#826](https://github.com/ruflin/Elastica/issues/826/)
1070- Allow bool in Query::setSource function [#818](https://github.com/ruflin/Elastica/issues/818/) https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html
1071- deleteByQuery() implemented in Elastica\Index [#816](https://github.com/ruflin/Elastica/issues/816/)
1072- Add MLT query against documents [#814](https://github.com/ruflin/Elastica/issues/814/)
1073- Added Elastica\Query\SimpleQueryString::setMinimumShouldMatch [#813](https://github.com/ruflin/Elastica/issues/813/)
1074- Added Elastica\Query\FunctionScore::setMinScore [#813](https://github.com/ruflin/Elastica/issues/813/)
1075- Added Elastica\Query\MoreLikeThis::setMinimumShouldMatch [#813](https://github.com/ruflin/Elastica/issues/813/)
1076- Added new methods to Elastica\Aggregation\DateHistogram: setOffset, setTimezone [#813](https://github.com/ruflin/Elastica/issues/813/)
1077- Following methods in Elastica\Aggregation\DateHistogram marked as deprecated: setPreOffset, setPostOffset, setPreZone, setPostZone, setPreZoneAdjustLargeInterval [#813](https://github.com/ruflin/Elastica/issues/813/)
1078- Add Elastica\Facet\DateHistogram::setFactor() [#806](https://github.com/ruflin/Elastica/issues/806/)
1079- Added Elastica\Query\QueryString::setTimezone [#813](https://github.com/ruflin/Elastica/issues/813/)
1080- Add .editorconfig [#807](https://github.com/ruflin/Elastica/issues/807/)
1081- Added Elastica\Suggest\Completion [#808](https://github.com/ruflin/Elastica/issues/808/)
1082- Fix elasticsearch links to elastic domain [#809](https://github.com/ruflin/Elastica/issues/809/)
1083- Added Elastica\Query\Image [#787](https://github.com/ruflin/Elastica/issues/787/)
1084- Add Scrutinizer Code Quality status badge
1085- Added support for percentiles aggregation [#786](https://github.com/ruflin/Elastica/issues/786/)
1086
1087
1088
1089## Changelog before 2.0.0
1090The changelog before version 2.0.0 was organised by date. All changes can be found below.
1091
10922015-02-17
1093- Release v1.4.3.0
1094- Added Elastica\Query\MatchPhrase [#599](https://github.com/ruflin/Elastica/issues/599/)
1095- Added Elastica\Query\MatchPhrasePrefix [#599](https://github.com/ruflin/Elastica/issues/599/)
1096
10972015-02-04
1098- Reset PHP 5.3 tests and enable compatibility for PHP 5.3 again
1099
11002015-02-16
1101- Update elasticsearch compatibility to 1.4.3 [#782](https://github.com/ruflin/Elastica/issues/782/)
1102- Add support for scripted metric aggrations [#780](https://github.com/ruflin/Elastica/issues/780/)
1103
11042015-02-14
1105- Added availability to specify regexp options in \Elastica\Filters\Regexp [#583](https://github.com/ruflin/Elastica/issues/583/) [#777](https://github.com/ruflin/Elastica/issues/777/)
1106- Add HHVM as build in travis [#649](https://github.com/ruflin/Elastica/issues/649/)
1107
11082015-02-11
1109- Fixed issue with OutOfMemory exception in travis builds [#775](https://github.com/ruflin/Elastica/issues/775/)
1110- Add support for filters aggregation [#773](https://github.com/ruflin/Elastica/issues/773/)
1111
11122015-01-27
1113- Housekeeping, coding standard [#764](https://github.com/ruflin/Elastica/issues/764/)
1114- Exception\ElasticsearchException now can be catched like all other exceptions as Exception\ExceptionInterface [#762](https://github.com/ruflin/Elastica/issues/762/)
1115
11162015-01-25
1117- Release v1.4.2.0
1118
11192015-01-23
1120- Added Elastica\Query\Regexp [#757](https://github.com/ruflin/Elastica/issues/757/)
1121
11222015-01-19
1123- Update to elasticsearch 1.4.2 [#378](https://github.com/ruflin/Elastica/issues/378/)
1124- Remove support for PHP 5.3
1125
11262015-01-14
1127- added @return annotation to top_hits aggregation DSL method [#752](https://github.com/ruflin/Elastica/issues/752/)
1128
11292015-01-07
1130- Added Elastica\Aggregation\TopHits [#718](https://github.com/ruflin/Elastica/issues/718/)
1131
11322015-01-05
1133- Vagrantfile updated [#742](https://github.com/ruflin/Elastica/issues/742/)
1134- Plugins updated to ES 1.3.4
1135- Since new version of thrift plugin is compatible with ES 1.3.4, plugin added back to test environment
1136
11372014-12-30
1138- Added: Filter\Range::setExecution, Filter\Terms::setExecution, Filter\Missing::setExistence, Filter\Missing::setNullValue, Filter\HasChild::setMinumumChildrenCount, Filter\HasChild::Filter\HasChild::setMaximumChildrenCount, Filter\Indices::addIndex
1139- Filter\HasChild::setType, Filter\HasParent::setType now support Type instance as argument
1140- Filter\Indices::setIndices, Filter\Indices::addIndex now support Index instance as argument
1141- (BC break) Removed as added by mistake: Filter\HasChild::setScope, Filter\HasParent::setScope, Filter\Nested::setScoreMode, Filter\Bool::setBoost
1142
11432014-12-23
1144- Additional Request Body Options for Percolator [#737](https://github.com/ruflin/Elastica/issues/737/)
1145
11462014-12-19
1147- making sure id is urlencoded when using updateDocument [#734](https://github.com/ruflin/Elastica/issues/734/)
1148- Implement the `weight` in the function score query [#735](https://github.com/ruflin/Elastica/issues/735/)
1149
11502014-12-09
1151- Changed setRealWorldErrorLikelihood to setRealWordErrorLikelihood [#729](https://github.com/ruflin/Elastica/issues/729/)
1152
11532014-11-23
1154- allow to customize the key on a range aggregation [#728](https://github.com/ruflin/Elastica/issues/728/)
1155
11562014-12-14
1157- Added fluent interface to Elastica\Query::setRescore [#733](https://github.com/ruflin/Elastica/issues/733/)
1158
11592014-11-30
1160- Added transport to support egeloen/http-adapter [#727](https://github.com/ruflin/Elastica/issues/727/)
1161
11622014-11-20
1163- add cache control parameters support to Elastica\Filter\Bool [#725](https://github.com/ruflin/Elastica/issues/725/)
1164
11652014-11-19
1166- Avoid remove previously added params when adding a suggest to the query [#726](https://github.com/ruflin/Elastica/issues/726/)
1167
11682014-11-16
1169- Added Elastica\QueryBuilder [#724](https://github.com/ruflin/Elastica/issues/724/)
1170- Update to elasticsearch 1.4.0
1171- Disable official support for PHP 5.3
1172
11732014-11-13
1174- fixed reserved words in queries which composed of upper case letters (Util::replaceBooleanWords) [#722](https://github.com/ruflin/Elastica/issues/722/)
1175
11762014-10-31
1177- Adding PSR-4 autoloading support [#714](https://github.com/ruflin/Elastica/issues/714/)
1178
11792014-10-29
1180- Updated Type::getDocument() exception handling. \Elastica\Exception\ResponseException will be thrown instead of \Elastica\Exception\NotFoundException if the ES response contains any error (i.e: Missing index) (BC break) [#687](https://github.com/ruflin/Elastica/issues/687/)
1181
11822014-10-22
1183- Added Util::convertDateTimeObject to Util class to easily convert \DateTime objects to required format [#709](https://github.com/ruflin/Elastica/issues/709/)
1184
11852014-10-15
1186- Remove ResponseException catch in Type::getDocument() [#704](https://github.com/ruflin/Elastica/issues/704/)
1187
11882014-10-10
1189- Fixed Response::isOk() to work better with bulk update api [#702](https://github.com/ruflin/Elastica/issues/702/)
1190- Adding magic __call() [#700](https://github.com/ruflin/Elastica/issues/700/)
1191
11922014-10-05
1193- ResultSet creation moved to static ResultSet::create() method [#690](https://github.com/ruflin/Elastica/issues/690/)
1194- Accept an options array at Type::updateDocument() [#686](https://github.com/ruflin/Elastica/issues/686/)
1195- Improve exception handling in Type::getDocument() [#693](https://github.com/ruflin/Elastica/issues/693/)
1196
11972014-10-04
1198- Release v1.3.4.0
1199- Update to elasticsearch 1.3.4 [#691](https://github.com/ruflin/Elastica/issues/691/)
1200
12012014-09-22
1202- Update the branch alias in composer.json to match the library version [#683](https://github.com/ruflin/Elastica/issues/683/)
1203
12042014-09-16
1205- Update license in composer.json to match project [#681](https://github.com/ruflin/Elastica/issues/681/)
1206
12072014-09-08
1208- Delete execution permission from non-executable files [#677](https://github.com/ruflin/Elastica/issues/677/)
1209
12102014-08-25
1211- Top-level filter parameter in search has been renamed to post_filter [#669](https://github.com/ruflin/Elastica/issues/669/) [#670](https://github.com/ruflin/Elastica/issues/670/)
1212- Deprecated: Elastica\Query::setFilter() is deprecated. Use Elastica\Query::setPostFilter() instead. [#669](https://github.com/ruflin/Elastica/issues/669/)
1213- Deprecated: Elastica\Query::setPostFilter() passing filter as array is deprecated. Pass instance of AbstractFilter instead. [#669](https://github.com/ruflin/Elastica/issues/669/)
1214
12152014-08-22
1216- Fixed escaping of / character in Elastica\Util::escapeTerm(), removed usage of JSON_UNESCAPED_SLASHES in Elastica\JSON [#660](https://github.com/ruflin/Elastica/issues/660/)
1217
12182014-08-06
1219- Add connection pool and connection strategy
1220
12212014-07-26
1222- Release v1.3.0.0
1223- Prepare Elastica Release v1.3.0.0
1224
12252014-07-25
1226- Update to elasticsearch version 1.3.0 https://www.elastic.co/downloads/past-releases/1-3-0
1227
12282014-07-14
1229 - Add setQuery() method to Elastica\Query\ConstantScore [#653](https://github.com/ruflin/Elastica/issues/653/)
1230
12312014-07-12
1232 - Be able to configure ES host/port via ENV var in test env [#652](https://github.com/ruflin/Elastica/issues/652/)
1233
12342014-07-07
1235 - Fix FunstionScore Query random_score without seed bug. [#647](https://github.com/ruflin/Elastica/issues/647/)
1236
12372014-07-02
1238- Add setPostFilter method to Elastica\Query (https://www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html) [#645](https://github.com/ruflin/Elastica/issues/645/)
1239
12402014-06-30
1241- Add Reverse Nested aggregation (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html). [#642](https://github.com/ruflin/Elastica/issues/642/)
1242
12432014-06-14
1244- Release v1.2.1.0
1245- Removed the requirement to set arguments filter and/or query in Filtered, according to the documentation: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html [#616](https://github.com/ruflin/Elastica/issues/616/)
1246
12472014-06-13
1248- Stop ClientTest->testDeleteIdsIdxStringTypeString from failing 1/3 of the time [#634](https://github.com/ruflin/Elastica/issues/634/)
1249- Stop ScanAndScrollTest->testQuerySizeOverride from failing frequently for no reason [#635](https://github.com/ruflin/Elastica/issues/635/)
1250- rework Document and Script so they can share some infrastructure allowing scripts to specify things like _retry_on_conflict and _routing [#629](https://github.com/ruflin/Elastica/issues/629/)
1251
12522014-06-11
1253- Allow bulk API deletes to be routed [#631](https://github.com/ruflin/Elastica/issues/631/)
1254
12552014-06-10
1256- Update travis to elasticsearch 1.2.1, disable Thrift plugin as not compatible and fix incompatible tests
1257
12582014-06-04
1259- Implement Boosting Query (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html) [#625](https://github.com/ruflin/Elastica/issues/625/)
1260
12612014-06-02
1262- add retry_on_conflict support to bulk [#623](https://github.com/ruflin/Elastica/issues/623/)
1263
12642014-06-01
1265- toString updated to consider doc_as_upsert if sent an array source [#622](https://github.com/ruflin/Elastica/issues/622/)
1266
12672014-05-27
1268- Fix Aggragations/Filter to work with es v1.2.0 [#619](https://github.com/ruflin/Elastica/issues/619/)
1269
12702014-05-25
1271- Added Guzzle transport as an alternative to the default Http transport [#618](https://github.com/ruflin/Elastica/issues/618/)
1272- Added Elastica\ScanAndScroll Iterator (https://www.elastic.co/guide/en/elasticsearch/guide/current/scan-scroll.html) [#617](https://github.com/ruflin/Elastica/issues/617/)
1273
12742014-05-13
1275- Add JSON compat library; Elasticsearch JSON flags and nicer error handling [#614](https://github.com/ruflin/Elastica/issues/614/)
1276
12772014-05-12
1278- Update dev builds to phpunit 4.1.*
1279
12802014-05-11
1281- Set processIsolation and backupGlobals to false to speed up tests. processIsolation was very slow with phpunit 4.0.19.
1282
12832014-05-05
1284- Fix get settings on alaised index [#608](https://github.com/ruflin/Elastica/issues/608/)
1285- Added named function for source filtering [#605](https://github.com/ruflin/Elastica/issues/605/)
1286- Scroll type constant to Elastica\Search added [#607](https://github.com/ruflin/Elastica/issues/607/)
1287
12882014-04-28
1289- Added setAnalyzer method to Query\FuzzyLikeThis Class and fixed issue with params not being merged [#611](https://github.com/ruflin/Elastica/issues/611/)
1290- Typo fixes [#600](https://github.com/ruflin/Elastica/issues/600/), [#602](https://github.com/ruflin/Elastica/issues/602/)
1291- Remove unreachable return statement [#598](https://github.com/ruflin/Elastica/issues/598/)
1292
12932014-04-27
1294- Release v1.1.1.1
1295- Fix missing use in TermsStats->setOrder() [#597](https://github.com/ruflin/Elastica/issues/597/)
1296- Replace all instances of ElasticSearch with Elasticsearch [#597](https://github.com/ruflin/Elastica/issues/597/)
1297
12982014-04-24
1299- Fixing the Bool filter with Bool filter children bug [#594](https://github.com/ruflin/Elastica/issues/594/)
1300
13012014-04-22
1302- Remove useless echo in the Memcache Transport object [#595](https://github.com/ruflin/Elastica/issues/595/)
1303
13042014-04-21
1305- escape \ by \\ [#592](https://github.com/ruflin/Elastica/issues/592/)
1306
13072014-04-20
1308- Handling of HasChild type parsing bug [#585](https://github.com/ruflin/Elastica/issues/585/)
1309- Consolidate Index getMapping tests [#591](https://github.com/ruflin/Elastica/issues/591/)
1310- Fix Type::getMapping when using an aliased index [#588](https://github.com/ruflin/Elastica/issues/588/)
1311
13122014-04-19
1313- Release v1.1.1.0
1314- Update to elasticsearch 1.1.1 https://www.elastic.co/downloads/past-releases/1-1-1
1315- Remove CustomFiltersScore and CustomScore query as removed in elasticsearch 1.1.0 https://github.com/elasticsearch/elasticsearch/pull/5076/files
1316- Update Node Info to use plugins instead of plugin (https://github.com/elasticsearch/elasticsearch/pull/5072)
1317- Fix mapping issue for aliases [#588](https://github.com/ruflin/Elastica/issues/588/)
1318
13192014-04-17
1320- Only trap real JSON parse errors in Response class [#586](https://github.com/ruflin/Elastica/issues/586/)
1321
13222014-04-09
1323- Added Cardinality aggregation [#581](https://github.com/ruflin/Elastica/issues/581/)
1324
13252014-04-07
1326- Support for Terms filter lookup options [#579](https://github.com/ruflin/Elastica/issues/579/)
1327
13282014-03-29
1329- Update to elasticsearch 1.1.0 https://www.elastic.co/downloads/past-releases/1-1-0
1330
13312014-03-26
1332- Fixed Query\Match Fuzziness parameter type [#576](https://github.com/ruflin/Elastica/issues/576/)
1333
13342014-03-24
1335- Release v1.0.1.2
1336- Added Filter\Indices [#574](https://github.com/ruflin/Elastica/issues/574/)
1337
13382014-03-25
1339- Allow json string as data srouce for Bulk\Action on update [#575](https://github.com/ruflin/Elastica/issues/575/)
1340
13412014-03-20
1342- Allow for request params in delete by query calls [#573](https://github.com/ruflin/Elastica/issues/573/)
1343
13442014-03-17
1345- Added filters: AbstractGeoShape, GeoShapePreIndexed, GeoShapeProvided [#568](https://github.com/ruflin/Elastica/issues/568/)
1346
13472014-03-15
1348- Percolate existing documents and add percolate options ([#570](https://github.com/ruflin/Elastica/issues/570/))
1349
13502014-03-14
1351- Added Query\Rescore [#441](https://github.com/ruflin/Elastica/issues/441/)
1352
13532014-03-13
1354- Added missing query options for MultiMatch (operator, minimum_should_match, zero_terms_query, cutoff_frequency, type, fuzziness, prefix_length, max_expansions, analyzer) [#569](https://github.com/ruflin/Elastica/issues/569/)
1355- Added missing query options for Match (zero_terms_query, cutoff_frequency) [#569](https://github.com/ruflin/Elastica/issues/569/)
1356
13572014-03-11
1358- Fixed request body reuse in http transport [#567](https://github.com/ruflin/Elastica/issues/567/)
1359
13602014-03-08
1361- Release v1.0.1.1
1362- Enable goecluster-facet again as now compatible with elasticsearch 1.0 on travis
1363- Run elasticsearch in the background to not have log output in travis build
1364- Set memache php version as environment variable
1365- Update to memcache 3.0.8 for travis
1366
13672014-03-07
1368- Add snapshot / restore functionality (Elastica\Snapshot) [#566](https://github.com/ruflin/Elastica/issues/566/)
1369
13702014-03-04
1371- Add PHP 5.6 to travis test environment
1372- Improve performance of Elastica/Status->getIndicesWithAlias and aliasExists on clusters with many indices [#563](https://github.com/ruflin/Elastica/issues/563/)
1373
13742014-03-02
1375- Release v1.0.1.0
1376- Fixed Type->deleteByQuery() not working with Query objects [#554](https://github.com/ruflin/Elastica/issues/554/)
1377
13782014-02-27
1379- Update to elasticsearch 1.0.1. Update Thrift and Geocluster plugin.
1380
13812014-02-25
1382- Add JSON_UNESCAPED_UNICODE and JSON_UNESCAPED_SLASHES options in Elastica/Transport/Http, Elastica/Bulk/Action [#559](https://github.com/ruflin/Elastica/issues/559/)
1383
13842014-02-20
1385- Fixed unregister percolator (still used _percolator instead of .percolator). removed duplicate slash from register percolator route. [#558](https://github.com/ruflin/Elastica/issues/558/)
1386
13872014-02-17
1388- Throw PartialShardFailureException if response has failed shards
1389- Elastica/Aggregations/GlobalAggragation not allowed as sub aggragation [#555](https://github.com/ruflin/Elastica/issues/555/)
1390
13912014-02-14
1392- Add methods setSize, setShardSize to Elastica/Aggregation/Terms
1393- Elastica/Aggregation/GlobalAggregationTest fixed bug where JSON returned [] instead of {}
1394- Elastica/ResultSet added method hasAggregations
1395
13962014-02-13
1397- Moved from Apache License to MIT license
1398
13992014-02-12
1400- Release v1.0.0.0
1401- Updated to elasticsearch 1.0: https://www.elastic.co/blog/1-0-0-released/
1402
14032014-02-11
1404- Add aggregations
1405
14062014-02-08
1407- Setting shard timeout doesn't work [#547](https://github.com/ruflin/Elastica/issues/547/)
1408
14092014-02-04
1410- Remove Elastica\Query\Field and Elastica\Query\Text, which are not supported in ES 1.0.0.RC1
1411- Minor tweaking of request and result handling classes to adjust for changes in ES 1.0.0.RC1
1412- Update mapper-attachments plugin to version 2.0.0.RC1 in .travis.yml
1413- Adjust tests to account for changes in ES 1.0.0.RC1
1414- Prevent the geocluster-facet plugin from being installed in test/bin/run_elasticsearch.sh as the plugin has not yet been updated for ES 1.0.0.RC1
1415
14162014-01-06
1417- Update to elasticsearch v1.0.0.RC2
1418
14192014-01-02
1420- Added Elastica\Query\DisMax
1421- Update to elasticsearch v1.0.0.RC1
1422
14232014-01-02
1424- Release v0.90.10
1425
14262014-01-31
1427- Fix _bulk delete proxy methods if type or index not explicitly defined.
1428
14292014-01-28
1430- Add _bulk delete proxy methods to Index and Type for consistency.
1431- Use the HTTP response code of GET requests (getDocument), instead of extists/found json property.
1432
14332014-01-22
1434- Add getParam & getProperties methods to Elastica\Type\Mapping
1435
14362014-01-21
1437- Code coverage generation for coveralls.io added: https://coveralls.io/r/ruflin/Elastica
1438- Add support for shard timeout to the Bulk api.
1439
14402014-01-17
1441- Fix typo in constant name: Elastica\Query\FunctionScore::DECAY_GUASS becomes DECAY_GAUSS
1442
14432014-01-13
1444- Add support for _bulk update
1445
14462014-01-14
1447- added \Elastica\Exception\ResponseException::getElasticsearchException()
1448- Changed logger default log level to debug from info
1449
14502014-01-13
1451- Update to elasticsearch 0.90.10
1452- Add Elastica\Facet\TermsStats::setOrder()
1453
14542014-01-08
1455- Adding analyze function to Index to expose the _analyze API
1456
14572014-01-07
1458- Document::setDocAsUpsert() now returns the Document
1459
14602013-12-18
1461- Update to Elasticsearch 0.90.8
1462- Add support for simple_query_string query
1463
14642013-12-15
1465- Add support for filter inside HasChild filter
1466- Add support for filter inside HasParent filter
1467
14682013-12-12
1469- Always send scroll_id via HTTP body instead of as a query param
1470- Fix the manner in which suggestion results are returned in \Elastica\ResultSet and adjust associated tests to account for the fix.
1471- Add \Elastica\Resultset::hasSuggests()
1472
14732013-12-11
1474- Pass arguments to optimize as query
1475- Add refreshAll on Client
1476
14772013-12-07
1478- Added Result::hasFields() and Result::hasParam() methods for consistency with Document
1479
14802013-12-07
1481- Escape slash in Util::escapeTerm, as it is used for regexp from Elastic 0.90
1482
14832013-12-05
1484- Add *.iml to .gitignore
1485- Refactor suggest implementation (\Elastica\Suggest, \Elastica\Suggest\AbstractSuggest, and \Elastica\Suggest\Term) to more closely resemble query implementation. (BC break)
1486- \Elastica\Search::addSuggest() has been renamed to \Elastica\Search::setSuggest()
1487- \Elastica\Query::addSuggest() has been renamed to \Elastica\Query::setSuggest()
1488- Add \Elastica\Suggest\Phrase, \Elastica\Suggest\CandidateGenerator\AbstractCandidateGenerator, and \Elastica\Suggest\CandidateGenerator\DirectGenerator
1489  (see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html)
1490
14912013-12-04
1492- Remove boost from FunctionScore::addFunction because this is not supported by elasticsearch
1493
14942013-12-02
1495- Issue [#491](https://github.com/ruflin/Elastica/issues/491/) resolved
1496
14972013-12-01
1498- Issue [#501](https://github.com/ruflin/Elastica/issues/501/) resolved
1499- satooshi/php-coveralls package added for coverall.io
1500- Multiple badges for downloads and latest stable release added
1501
15022013-11-30
1503- Remove facets param from query if is empty array
1504- Add size param to API for TermsStats
1505
15062013-11-23
1507- Release v0.90.7.0
1508
15092013-11-19
1510- Updated geocluster-facet to 0.0.9
1511
15122013-11-18
1513- Added \Elastica\Filter\Regexp
1514
15152013-11-16
1516- Remove wrong documentation for "no limit" [#496](https://github.com/ruflin/Elastica/issues/496/)
1517- Update to elasticsearch 0.90.7
1518
15192013-11-03
1520- Issue [#490](https://github.com/ruflin/Elastica/issues/490/): Set Elastica\Query\FunctionScore::DECAY_EXPONENTIAL to "exp" instead of "exponential"
1521
15222013-10-29
1523- Elastica_Type::exists() added
1524  See https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-types-exists.html#indices-types-exists
1525
15262013-10-27
1527- Adapted possible values (not only in) for minimum_should_match param based on elasticsearch documetnation https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html
1528
15292013-10-27
1530- Release v0.90.5.0
1531
15322013-10-26
1533- Update to elasticsearch 0.90.5
1534
15352013-10-21
1536- Fix \Elastica\Filter\HasParent usage of \Elastica\Query as to not collide with \Elastica\Filter\Query, bring \Elasitca\Filter\HasChild into line
1537
15382013-10-01
1539- Also pass the current client object to the failure callback in \Elastica\Client.
1540
15412013-09-20
1542- Update to geocluster-facet 0.0.8
1543- Add support for term suggest API
1544  See https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html
1545
15462013-09-18
1547- Fix \Elastica\Filter\HasChild usage of \Elastica\Query as to not collide with \Elastica\Filter\Query namespace
1548
15492013-09-17
1550- Update to elasticsearch 0.90.4
1551- Add support for function_score query
1552- Skip geocluster-facet test if the plugin is not installed
1553- Correct \Elastica\Test\ClientTest to catch the proper exception type on connection failure
1554- Fix unit test errors
1555
15562013-09-14
1557- Nested filter supports now the setFilter method
1558
15592013-09-03
1560- Support isset() calls on Result objects
1561
15622013-08-27
1563- Add \ArrayAccess on the ResultSet object
1564
15652013-08-25
1566- Update to elasticsearch 0.90.3
1567
15682013-08-25
1569- Release v0.90.2.0
1570
15712013-08-20
1572- Support for "proxy" param for http connections
1573
15742013-08-17
1575- Add support for fields parameter in Elastica_Type::getDocument()
1576
15772013-08-13
1578- Add a getQuery method on the FilteredQuery object
1579
15802013-08-01
1581- Second param to \Elastica\Search.php:count($query = '', $fullResult = false) added. If second param is set to true, full ResultSet is returned including facets.
1582
15832013-07-16
1584- Plugin geocluster-facet support added
1585
15862013-07-02
1587- Add Query\Common
1588- Can now create a query by passing an array to Type::search()
1589
15902013-07-01
1591- Add Filter\GeohashCell
1592
15932013-06-30
1594- Revamped upsert so that Scripts are now first class citizens. (BC break)
1595  See http://elastica.io/migration/0.90.2/upsert.html
1596- Implemented doc_as_upsert.
1597
15982013-06-29
1599- Update to elasticsearch 0.90.2
1600- Enabled ES_WAIT_ON_MAPPING_CHANGE for travis builds
1601
16022013-06-25
1603- Added upsert support when updating a document with a partial document or a script.
1604
16052013-06-23
1606- Add filtered queries to the percolator API.
1607
16082013-06-21
1609- Correct class name for TermTest unit test
1610- Implement terms lookup feature for terms filter
1611
16122013-06-14
1613- Fix support for making scroll queries once the scroll has been started.
1614
16152013-06-07
1616- Release 0.90.1.0
1617
16182013-06-05
1619- Changed package name to lowercase to prevent potential issues with case sensitive file systems and to refelect the package name from packagist.org.
1620  If you are requiring elastica in your project you might want to change the name in the require to lowercase, although it will still work if written in uppercase.
1621  The composer autoloader will handle the package correctly and you will not notice any difference.
1622  If you are requiring or including a file by hand with require() or include() from the composer vendor folder, pay attention that the package name in
1623  the path will change to lowercase.
1624- Add Bulk\Action\UpdateDocument.
1625- Update Bulk\Action\AbstractDocument and Bulk\Action to enable use of OP_TYPE_UPDATE.
1626- Update .travis.yml to use Elasticsearch version 0.9.1, as bulk update is a new feature in 0.9.1.
1627
16282013-06-04
1629- Elastica\Client::_configureParams() changed to _prepareConnectionParams(), which now takes the config array as an argument
1630
16312013-06-03
1632- Add getPlugins and hasPlugin methods to Node\Info
1633
16342013-05-30
1635- Update Index\Status::getAliases() to use new API
1636- Update Index\Status::getSettings() to use new API
1637
16382013-05-29
1639- Add _meta to mapping. [#330](https://github.com/ruflin/Elastica/issues/330/)
1640
16412013-05-27
1642- Added parameters to implement scroll
1643
16442013-05-23
1645- add support PSR-3(https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
1646- Elastica\Log implement LoggerInterface(extends Psr\Log\AbstractLogger)
1647  if you want use logging need install https://github.com/php-fig/log for example (composer require psr/log:dev-master)
1648  if use Elastica\Log inside Elastica\Client nothing more is needed
1649  if use Elastica\Log outside we need use as(https://github.com/php-fig/log) for example Elastica\Log::info($message) or Elastica\Log::log(LogLevel::INFO,$message)
1650- Elastica\Client add setLogger for setting custom Logger for example Monolog(https://github.com/Seldaek/monolog)
1651
16522013-05-18
1653- Elastica\Index::exists fixed for 0.90.0. HEAD request method introduced
1654- Elastica\Filter\AbstractMulti::getFilters() added
1655- Implement Elastica\Type\Mapping::enableAllField
1656- Refresh for Elastica\Index::flush implemented [#316](https://github.com/ruflin/Elastica/issues/316/)
1657- Added optional parameter to filter result while percolate [#384](https://github.com/ruflin/Elastica/issues/384/)
1658
16592013-05-07
1660- Added EXPERIMENTAL DocumentObjectInterface to be used with Type::addObject()/addObjects()
1661
16622013-04-23
1663- Removed Elastica\Exception\AbstractException
1664- All Exceptions now implement Elastica\Exception\ExceptionInterface
1665
16662013-04-17
1667- Query\Fuzzy to comply with DSL spec. Multi-field queries now throw an exception. Implemented: Query\Fuzzy::setField, Query\Fuzzy::setFieldOption.
1668- Query\Fuzzy::addField has been deprecated.
1669
16702013-04-12
1671- Adding max score information in ResultSet
1672- Adding test for the ResultSet class
1673
16742013-03-20
1675- Removal of unsupported minimum_number_should_match for Boolean Filter
1676
16772013-02-25
1678- Added Elastica\Bulk class responsible for performing bulk requests. New bulk requests implemented: Client::deleteDocuments(), Bulk::sendUdp()
1679
16802013-02-20
1681- Release candidate 0.20.5.0.RC1
1682
16832013-02-14
1684- Added factory for transports that is used by the Connection class
1685- The transport instances now has support for parameters that can be injected by specifying an array as a transport when creating the Elastica client
1686
16872013-02-08
1688- Terms->setScript() Added, namespace Elastica\Facet
1689
16902013-01-31
1691- Removed deprecated method Type::getType()
1692- Removed deprecated old constructor call in Filter\GeoDistance::__construct()
1693- Removed deprecated method Filter\Script::setQuery()
1694- Removed deprecated methods Query\QueryString::setTieBraker() and Query\QueryString::setQueryString()
1695- Removed deprecated methods Query\Builder::minimumShouldMatch() and Query\Builder::tieBreaker()
1696
16972013-01-25
1698- Add get/set/has/remove methods to Document
1699- Add magic methods __get/__set/__isset/__unset to Document
1700- Document::add method became deprecated, use set instead
1701- Populate document id created by elasticsearch on addDocument()/addDocuments() call if no document id was set
1702- Populate updated fields in document on Client::updateDocument() call if fields options is set
1703
17042013-01-24
1705- Added serialization support. Objects can be added to elastica directly when a serializer callable is configured on \Elastica\Type
1706
17072013-01-21
1708- Added Thrift transport. Ir requires installing munkie/elasticsearch-thrift-php package and elasticsearch-tranport-thrift plugin should be installed in elastcisearch
1709
17102013-01-13
1711- Add version option to Elastica_Search::search
1712- Remove compatibility for PHP 5.2
1713- Changed all syntax using namespaces, in compliance with PSR-2.
1714- Usage of composer for lib and test autoloading
1715- Added PHPUnit as a dev dependency in composer.json
1716- All tests were rewritten for new syntax.
1717- All tests where moved in Elastica\Test namespace
1718- All tests now inherit from Elastica\Test\Base
1719- Removed all executable flags on files where not needed.
1720- Update to elasticsearch 0.20.2
1721- Refactored Elastica_Script and added it support in Elastica_Query_CustomFiltersScore, Elastica_Query_CustomScore and Elastica_Filter_Script
1722- Refactored Elastica_Client::updateDocument() method to support partial document update. $data can be Elastic_Script, Elastic_Document or array.
1723- Elastica_Type::updateDocument() now takes Elastica_Document instead of Elastica_Script (BC break). Script can be set to document to perform script update.
1724
17252012-12-23
1726- Elastica_Client config param "servers" to "connections" renamed. "headers" and "curl" are now a config param inside "connections"
1727- Elastica_Connection added to allow connection management (enabled / disable)
1728- Refactoring of Elastica_Request. Takes Elastica_Connection in constructor instead of Elastica_Client
1729- Elastica_Transport refactored
1730- Elastica_Log refactored
1731- Renamed Elastica_Exception_Client to Elastica_Exception_Connection
1732- Use Elastica_Connection for the following constants: DEFAULT_PORT, DEFAULT_HOST, DEFAULT_TRANSPORT, TIMEOUT
1733
17342012-11-28
1735- Added Elastica_Filter_GeoDistanceRange filter
1736
17372012-11-23
1738- Simplified Elastica_Document data handling by extending Elastica_Param
1739
17402012-11-10
1741- Added Elastica_Cluster_Health, Elastica_Cluster_Health_Index and Elastica_Cluster_Health_Shard which wrap the _cluster/health endpoint.
1742- Added Elastica_Document::setId()
1743- Added options parameter to Elastica_Type::getDocument()
1744- Added Elastica_Query_Filtered::getFilter()
1745
17462012-10-30
1747- Elastica_Search implement Elastica_Searchable interface
1748
17492012-10-28
1750- Add Elastica_Filter_HasParent and Elastic_Query_HasParent
1751
17522012-08-11
1753- Release v0.19.8.0
1754- Elastica_Query_Prefix added
1755
17562012-07-26
1757- Change Elastica_Filter_GeoDistance::__construct(), accepts geohash parameter (BC break, before: ($key, $latitude, $longitude, $distance), after: ($key, $location, $distance) where $location is array('lat' => $latitude, 'lon' => $longitude) or a geohash)
1758
17592012-07-17
1760- Changed naming for several methods to camelCase
1761- Enforced PSR1 code style, as per https://github.com/pmjones/fig-standards/blob/psr-1-style-guide/proposed/PSR-1-basic.md
1762- Added Elastica_Script::toArray
1763- Added Elastica_ScriptFields
1764- Elastica_Query::setScriptFields now takes Elastica_ScriptFields or associative array as argument, the old implementation was bogus.
1765
17662012-06-24
1767- Simplify Elastica_Type::search and Elastica_Index::search by using Elastica_Search
1768- Implement Elastica_Filter_Abstract::setCache and Elastica_Filter_Abstract::setCacheKey
1769- Add Elastica_Param::hasParam
1770- Remove unsupported use of minimum number should match for Boolean Filter
1771- Remove old style path creation through params in Elastica_Index::create and Elastica_Search::search
1772
17732012-06-22
1774- Add Elastica_Filter_Limit
1775- Add getters+setters for Index Setting blocks 'read', 'write' and 'metadata'
1776- Add Elastica_Filter_MatchAll
1777
17782012-06-20
1779- Facet scope added
1780
17812012-06-09
1782- Change $_parent to null to also support 0 for an id
1783- Fix Elasitca_Document->toArray()
1784
17852012-05-01
1786- Release v0.19.3.0
1787- MoreLikeThis Query in Elastica_Document
1788- Add query param for request (allows GET params)
1789
17902012-03-04
1791- Node info call update. The receive os info and more, param is needed. By default, only basics are returned
1792- Release v0.19.0.0 which is compatible with ES 0.19.0 https://www.elastic.co/downloads/past-releases/0-19-0
1793
17942012-02-21
1795- Allow percolate queries in bulk requests
1796- Fix memory leak in curl requests
1797
17982012-01-23
1799- Packagist added http://packagist.org/
1800
18012012-01-15
1802- Vagrantfile for vagrant environment with elasticsearch added. Run: vagrant up
1803
18042012-01-08
1805- Allow to set curl params over client config [#106](https://github.com/ruflin/Elastica/issues/106/) [#107](https://github.com/ruflin/Elastica/issues/107/)
1806- Add the possibility to add path or url in config for a request [#120](https://github.com/ruflin/Elastica/issues/120/)
1807
18082012-01-04
1809- Elastica_Index::exists() and Elastica_Cluster::getIndexNames() added
1810
18112012-01-01
1812- Elastica_Cluster_Settings added
1813- Read only feature for cluster and index added. This feature is elasticsearch >0.19.0 only. ES 0.19.0 release is not out yet
1814
18152011-12-29
1816- Elastica_Type::deleteByQuery implemented
1817
18182011-12-20
1819- Release v0.18.6.0
1820
18212011-12-19
1822- Percolator for Type and Documents added
1823
18242011-12-06
1825- Elastica_Percolator added. See tests for more details
1826
18272011-12-02
1828- Rename Elastica_Type::getType() to Elastica_Type::getName(), getType() is now deprecated
1829
18302011-12-01
1831- Elastica_Filter_Term::addTerm renamed to setTerm, Elastica_Filter_Term::setTerm renamed to setRawTerm
1832- Elastica_Query_Term::addTerm renamed to setTerm, Elastica_Query_Term::setTerm renamed to setRawTerm
1833
18342011-11-30
1835- Release v0.18.5.0
1836
18372011-11-28
1838- Elastica_Filter_Nested added
1839
18402011-11-26
1841- Elastica_Search::addIndices(), Elastica_Search::addTypes() added
1842
18432011-11-20
1844- Release v0.18.4.1
1845- Elastica_Log added for logging. Has to be passed as client config to enable
1846- Elastica blogging introduced: http://ruflin.com/en/elastica
1847
18482011-11-17
1849- Release v0.18.4.0
1850- Support for Travis CI added: http://travis-ci.org/ruflin/Elastica
1851
18522011-11-07
1853- Elastica_Index_Stats added
1854
18552011-11-05
1856- Elastica_Query_Nested added
1857
18582011-10-29
1859- TTL for document and mapping added
1860
18612011-10-28
1862- Refactored Elastica_Query_CustomScore::addCSParam to ::addParams
1863- Rename Elastica_Query_CustomScore::addParam to ::addCSParam
1864- Release v0.18.1.0
1865
18662011-10-20
1867- Release v0.17.9.0
1868- Elastica_Filter_Type added
1869
18702011-10-19
1871- Elastica_Query_CustomFilterScore added
1872
18732011-10-15
1874- API Documentation changed to DocBlox
1875
18762011-10-10
1877- Bug fixing
1878- Release v0.17.8.0 added
1879
18802011-09-19
1881- Release v0.17.7.0 added
1882- Release v0.17.6.1 added
1883
18842011-09-18
1885- Elastica_Exception_ExpectedFieldNotFound renamed to Elastica_Exception_NotFound
1886
18872011-08-25
1888- Https transport layer added
1889
18902011-08-22
1891- Typo in Terms query fixed (issue [#74](https://github.com/ruflin/Elastica/issues/74/))
1892
18932011-08-15
1894- Refactoring HTTP connection to keep alive connection -> speed improvement during using the same client
1895- Release v0.17.6.0 added
1896
18972011-08-09
1898- Automatic creation of id for documents added. This was more a bug
1899- Release v0.17.4.0 added
1900
19012011-08-08
1902- Elastica_Query_Text added
1903- Params (constructor) of Elastica_Filter_GeoBoundingBox changed (array instead of single params)
1904
19052011-08-07
1906- Elastica_Query_MoreLikeThis added by @juneym. Still work under progress
1907- Refactoring Queries and Filters to use Elastica_Param. Adding tests
1908
19092011-08-05
1910- Elastica_Filter_Abstract enhanced for more general usage (set/get/addParam(s)) added
1911
19122011-08-04
1913- Release v0.17.3.0 added
1914- Elastica_Index_Settings::set/get response updated. get('...') does not require 'index.' in front anymore
1915- Nodes and Cluster shutdown added
1916- Elastica_Node::getIp() and getPort() added
1917
19182011-07-30
1919- Readd merge_factor to settings. Now working as expected. Index has to be closed first.
1920
19212011-07-29
1922- Release tag v0.17.2.0 added. Elastica is compatible with elasticsearch 0.17.2
1923
19242011-07-22
1925- Elastica_Index_Settings::getMergePolicyMergeFactor and set removed because of enhanced merge policy implementation in ES 0.17.0 https://github.com/elasticsearch/elasticsearch/issues/998
1926- Release tav v0.17.1.0 added
1927
19282011-07-21
1929- Elastica_Query_HasChild and _parent feature added by fabian
1930- Elastica_Filter_GeoBoundingBox added by fabian
1931
19322011-07-20
1933- Elastica_Query_Builder added by chrisdegrim
1934
19352011-07-19
1936- Release tag v0.17.0.0 added. Elastica is compatible with elasticsearch 0.17.0
1937
19382011-07-18
1939- ResultSet::hasFacets added
1940- QueryString useDisMax added
1941
19422011-07-15
1943- Facet/DateHistogram and Facet/Historgram added
1944- Documentation pages added unter http://ruflin.github.com/Elastica
1945- Release tag v0.16.4.0 added
1946
19472011-06-19
1948- Add support for multiple servers to Elastica_Client (issue [#39](https://github.com/ruflin/Elastica/issues/39/))
1949
19502011-06-16
1951- Support for multiple index, type queries and _all queries added through Elastica_Search object
1952- Elastica_Index::clearCache added to clean cache
1953- Elastica_Index::flush added
1954
19552011-06-07
1956- Elastica_Index::setNumberOfShards removed as not supported after creating index
1957
19582011-05-11
1959- Refactor client constructor. Elastica_Client::__construct(array $config) now takes a config array instead of host and port
1960
19612011-05-08
1962- Elastica_Query_QueryString::escapeTerm move to Elastica_Util::escapeTerm
1963
19642011-04-29
1965- Added getParam to Elastica_Result that more values can be retrieved from the hit array
1966- Elastica_Filter_Ids added https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-filter.html
1967- getMergePolicyMergeFactor and getRefreshInterval to Elastica_Type_Settings added. If no value is set, default values are returned
1968
19692011-04-28
1970- Release of version 0.16.0.0 (see new version naming structure in README)
1971
19722011-04-27
1973- Refactoring of Elastica_Type::setMapping. No source parameter anymore.
1974- Elastica_Type_Mapping object introduced to set more fine grained mapping
1975
19762011-04-17
1977- Elastica_Filter_Exists added
1978
19792011-04-14
1980- Elastica_Type getCount replace by count()
1981- Count has now optional query parametere
1982
19832011-04-01
1984- Renaming of functions in Elastica_Query_Terms and Ela-stica_Query_Filter to fit new naming convention. setTerms, addTerm have different API now!
1985
19862011-03-31
1987- Deprecated code removed
1988- Break backward compatibility to 0.15.1 (versions introduced by wlp1979)
1989
19902011-03-30
1991- Filtered query introduced
1992- setRawArguments in Elastica_Query is now setParam
1993- open / close for index added
1994- Remove Elastica_Filter and Elastica_Facets because not needed anymore
1995
19962011-03-29
1997- Renaming Elastica_Filter->addQuery, addFilter to setQuery, setFilter
1998- Add parts of Facets API
1999- Add facet Terms
2000- Renaming Elastica_Query->addFilter to setFilter
2001
20022011-03-24
2003- Renaming of Elastica_Status_Index to Elastica_Index_Status => API Change!
2004- IndexSettings added for improved bulk updating https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html
2005
20062011-03-21
2007- Node object added
2008- Node_Info and Node_Stats added
2009- Refactoring of Cluster object
2010
20112011-03-13
2012- changes.txt introduced
2013- getResponse in Elastica_Response renamed to getData. getResponse now deprecated
2014- Index status objects added
2015- getIndexName in Elastica_Index renamed to getName. getIndexName is deprecated
2016
20172011-03-21
2018- ChildrenAggregation added - https://www.elastic.co/guide/en/elasticsearch/guide/current/children-agg.html
2019