[[changelog]]
== Changelog

=== 14.1.0 (Jan 31 2018)
  * apiVersion `"6.1"` is now the default
  * Fix the way that `keepAliveFreeSocketTimeout` is used https://github.com/elastic/elasticsearch-js/pull/600[#600] (Thanks https://github.com/shaharmor[@shaharmor]!)

=== 14.0.0 (Nov 14 2017)
  * apiVersion `"6.0"` is now the default

=== 13.3.0 (Aug 9 2017)
  * apiVersion `"5.5"` is now the default
  * Use JSON version of scroll/clearScroll API in for apiVerion 2.0+ https://github.com/elastic/elasticsearch-js/pull/576[#576]

=== 13.2.0 (Jun 21 2017)

  * Added `sniffedNodesFilterPath` config parameter to allow customizing the `filter_path` sent when sniffing for new nodes. https://github.com/elastic/elasticsearch-js/pull/559[#599]

=== 13.1.2 (Jun 21 2017)

  * Update APIs after resolving https://github.com/elastic/elasticsearch/issues/25234[#25234]

=== 13.1.1 (Jun 14 2017)

  * Fixed the `"5.x"` API https://github.com/elastic/elasticsearch-js/issues/556[#556]

=== 13.1.0 (Jun 12 2017)

  * apiVersion `"5.4"` is now the default

=== 13.0.1 (May 9 2017)

  * Fixed the way that `clearScroll` handles it's `scrollId` param https://github.com/elastic/elasticsearch-js/pull/541[#541]

=== 13.0.0 (Apr 24 2017)

  * apiVersion `"5.3"` is now the default
  * Fixed the way that http addresses are sniffed from the cluster https://github.com/elastic/elasticsearch-js/issues/496[#496]
  * Switched back to `agentkeepalive` for managing keep-alive connections https://github.com/elastic/elasticsearch-js/issues/476[#476]
  * `keepAlive*` settings have changed, and the defaults have been updated to match node.js/agentkeep defaults https://github.com/elastic/elasticsearch-js/commit/87cc201c0693a30953033c7d15dd4019f61b2b0f[87cc201]
  * `bulk` and other APIs that send line-delimited JSON bodies now use the `Content-Type: application/x-ndjson` header https://github.com/elastic/elasticsearch-js/pull/507[#507]
  * `"console"` reporter is now available in Node.js for environments where that is preferred to `"stdout"` https://github.com/elastic/elasticsearch-js/pull/496[#523]
  * minor changes to `apiVersion` will no longer be released as a major release
  ** When we decided to have elasticsearch-js support multiple version of Elasticsearch, we included an `apiVersion` configuration paramter for users to choose the API that each client should expose. This setting had a default value that matched the most recent version of Elasticsearch at the time of release. Since Elasticsearch didn't make specific guarantees about backwards compatibility elasticsearch-js released a new major version every time the default `apiVersion` changed.
+
Elasticsearch now guarantees backwards compatibility within a specific major version, and has for a while, (https://www.elastic.co/support/eol[See "Types of Releases"]) so starting in 13.0, changes to the default `apiVersion` that are within the same major version of Elasticsearch will be released as minor version updates. This means that when Elasticsearch 5.3 is released, elasticsearch-js will release a new 13.x version, and when Elasticsearch 6.0 is released, elasticsearch-js will release a major update (14.0, or similar).

  * all but the latest `apiVersion` options from the 1.x and 2.x line have been removed
  ** Elasticsearch-js ships with individual API definitions for every minor version of Elasticsearch, leading to the library becoming  https://github.com/elastic/elasticsearch-js/issues/490[unnecessarily large]. In an effort to find a compromise between size and ease of use elasticsearch-js now only ships with `apiVersion` options for the latest minor release of Elasticsearch 1.x and 2.x (1.7 and 2.4 at this time).
+
If you use an older version of Elasticsearch 1.x or 2.x, please consider upgrading to get the latest features and bug fixes (https://www.elastic.co/support_policy[see section 7.1 of the support policy]). If you cannot upgrade then you have two options:

  1. Use the `apiVersion` that matches the **major** version of your Elasticsearch install (1.4 => 1.7, 2.0 => 2.4, etc.). This definition may include new APIs or parameters that are mentioned in the docs but not actually available in your Elasticsearch version, but any methods or parameter you were using before 13.0 should work perfectly.
  2. Download the API definition file for the version you are using from the https://github.com/elastic/elasticsearch-js/tree/da99740e1196068bdc03f830a0964cf5f05f0925/src/lib/apis[12.1.1 source], and then attach it to the client like so:
+
[source,js]
--------
const elasticsearch = require('elasticsearch')
elasticsearch.Client.apis['1.4'] = require('./1_4.js'); // downloaded from https://git.io/vDE7w

const client = new elasticsearch.Client({
  apiVersion: '1.4'
})
--------

=== 12.1 (Nov 16 2016)
  * Added <<config-http-auth,`httpAuth`>> configuration parameter
  * Fixed a bug introduced in v9.0.1 that prevented error messages from including some available metadata

=== 12.0 (Oct 26 2016)
  * apiVersion `"5.0"` is now the default

=== 11.0 (Apr 5 2016)
  * apiVersion `"2.3"` is now the default
  * updated APIs, to use the new APIs exposed by the `v5.0.0-alpha1` of elasticsearch use the `"master"` api version.
  * Switch to https://www.npmjs.com/package/promise[promise] from https://www.npmjs.com/package/promise-js[promise-js] to prevent polluting global environment
  * Pass the keepAlive configuration all the way to the Agent https://github.com/elastic/elasticsearch-js/pull/371[#371]

=== 10.1 (Jan 8 2016)
  * browser builds now include the "unstable" api's from elasticsearch
  * added `createNodeAgent` configuration value for overriding the agent that the node.js HttpConnector uses. (see https://github.com/elastic/elasticsearch-js/pull/329[#329])
  * fix a bug that could cause error statuses to be strings rather than numbers
  * doc fixes
  * support sniffing nodes that have published hostnames
  * error logging now includes information about the request where the error occured https://github.com/elastic/elasticsearch-js/pull/330[#330]

=== 10.0 (Nov 24 2015)
  * apiVersion `"2.1"` is now the default
  * Remove `bluebird` dependency, use an ES6 Promise shim instead. To use Bluebird in your project supply the <<config-defer,defer>> configuration option.

=== 9.0 (Oct 30 2015)
  * apiVersion `"2.0"` is now the default
  * Fix a memory leak caused by sniffing
  * Use the `application/x-ldjson` content-type for bulk formatted bodies
  * Added `wwwAuthenticateDirective` property to `401` errors

=== 8.2 (Sep 17 2015)
  * Added <<config-sniffed-nodes-protocol,`sniffedNodesProtocol`>> configuration option
  * Fixed an issue which prevented promised from getting rejected if the `GET` verb was used with a request body (https://github.com/elastic/elasticsearch-js/issues/263[#263])

=== 8.1 (Sep 8 2015)
  * Added apiVersion `"2.x"`, which will semi-regularly be updated to match the latest development at https://github.com/elastic/elasticsearch/tree/2.x[elastic/elasticsearch#2.x]
  * Removed node engine upper-bound, supporting 4.0 and versions beyond.

=== 8.0 (Aug 26 2015)
  * apiVersion changed back to `"1.7"` until es 2.0 is actually released.

=== **unpublished** 7.0 (Aug 26 2015)
  * Added apiVersion `"2.0"`, which is now the default

=== 6.1 (Aug 18 2015)
  * Added experimental support for apiVersion `"2.0"`
  * Added support for https://github.com/elastic/elasticsearch-js/blob/ea6721127fb239951fb86ac3b386e182b26f683c/src/lib/errors.js#L94-L138[many more status codes] so that "unknown error" is far less likely.

=== 6.0 (Aug 4 2015)
  * Added apiVersion `"1.7"`, which is now the default
  * Error objects resulting from a completed http request now have much more information about the request that caused them.

=== 5.0 (Jun 9 2015)
  * Added apiVersion `"1.6"`, which is now the default

=== 4.1 (May 19 2015)
  * Plugin configuration option added
  * Added support for object based error

=== 4.0 (Mar 26 2015)
  * Added apiVersion `"1.5"`, which is now the default
  * Changed the default pingTimeout to 3 seconds, and made it configurable
  * Improved compatibility with node 0.12
  * Updated dependencies
  * Make the stream logger actually usable (thanks @falmp!)

=== 3.1 (Jan 6 2015)
  * Added HTTPS/SSL configuration options and related errors
  * `client.scroll()` requests made without a body will use the `scrollId` param as the body to prevent #113 & #174
  * Updated bluebird to `v2.8.2` - https://github.com/petkaantonov/bluebird/blob/master/changelog.md[bluebird changelog]
  * Added specific error message for 504 errors https://github.com/elastic/elasticsearch-js/pull/182[#182]

=== 3.0 (Nov 7 2014)
  * Added apiVersion `"1.4"`, which is now the default
  * Improved parsing of `host:` strings, https://github.com/elastic/elasticsearch-js/blob/165b7d7986b2184b2e4b73d33bf5803e61ce7a54/test/unit/specs/host.js#L71-L92[examples in the tests]
  * The Angular version of the client now uses `angular.toJson()` (https://code.angularjs.org/1.2.27/docs/api/ng/function/angular.toJson[1.2], https://code.angularjs.org/1.3.5/docs/api/ng/function/angular.toJson[1.3]) to serialize requests, override with `serializer: "json"`
  * Angular requests are now being https://github.com/elastic/elasticsearch-js/commit/4c106967d3e9ae208fae42ce013f0a21e1ace021[aborted properly]

=== 2.4 (Jul 30 2014)
  * Added apiVersion `"1.3"`, which is now the default
  * Angular connector (when used with Basic Auth) no longer modifies Angular's default headers

=== 2.3 (Jul 11 2014)
  * Added support for Node 0.11
  * Updated `bluebird`, which modified the https://github.com/petkaantonov/bluebird/blob/v2.2.1/API.md[promise api] somewhat
  * moved the log generator into it's own package https://www.npmjs.org/package/makelogs[makelogs]
  * https://github.com/elastic/elasticsearch-js/pull/122[Lower the logging level of `Request complete`]

=== 2.2 (Mar 27 2014)
  * The default API version is now `'1.2'`
  * Node clinet now supports master, 1.x, 1.2, 1.1, 1.0, and 0.90
  * Browser client now supports versions 1.0, 1.1, and 1.2

=== 2.1 (Mar 27 2014)
  * The default API version is now `'1.1'`
  * Errors generated in the browser will now have stack traces
  * Clarified IE-support
  * Improvements to the bundled log-generator

=== 2.0 (Mar 27 2014)
  * The default API version is now `'1.0'`
  * Promises are now supported using the Bluebird module
  * If you try to reuse a configuration object, an error will be thrown. https://github.com/elastic/elasticsearch-js/issues/33

=== 1.5 (Feb 6 2014)
  * Switched out `keepaliveagent` dependency with `forever-agent`, which is used in the ever popular `request` module, and is much simpler
  * The option to use keep-alive is now all or nothing. `maxKeepAliveTime` and `maxKeepAliveRequests` config parameters have been replaced by `keepAlive`, which will keeps at least `minSockets` connections open forever. See: http://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/configuration.html
  * Closing the client with `keepAlive` turned on will allow the process to exit. https://github.com/elastic/elasticsearch-js/issues/40
  * Fixed a bug that caused invalid param/type errors to not be reported properly, in the browser builds that use promises
  * added the cat.threadPool to the master/1.0/1.x apis
  * Enabled Basic auth in the Angular connector -- Thanks @jeff-french!
  * Fixed a bug that was preventing index requests (and any other POST/PUT request) from using connections in the connection pool

=== 1.4 (Jan 30 2014)
  * The trace log messages will now diaplay the actual host connected to (without auth info) unless they are being written to a bash script
  * API Updated with latest changes awaiting 1.0 release

=== 1.2/1.3 (Jan 17 2014)
  * `apiVersion` config parameter was added. Use this to specify which API the client should provide, we currently offer support for elasticsearch branches "0.90", "1.0", and "master"


=== 1.1 (Dec 22 2013)
  * Changed the resolution value of promises. Instead of being an object like `{body: ..., status: ...}` it is now
  just the response body


=== 1.0 (Dec 17 2013)
  * Initial Release


=== pre 1.0
  * Another module, now know as es on npm, used the elasticsearch module name. This module had several pre-1.0
  releases so we started at 1.0 to prevent collisions in exiting projects. The history for that project is available https://github.com/ncb000gt/node-es[here]
