[[installation]]
== Installation

This page guides you through the installation process of the client.

To install the latest version of the client, run the following command:

[source,sh]
----
npm install @elastic/elasticsearch
----

To install a specific major version of the client, run the following command:

[source,sh]
----
npm install @elastic/elasticsearch@<major>
----

To learn more about the supported major versions, please refer to the 
<<js-compatibility-matrix>>.

[discrete]
[[nodejs-support]]
=== Node.js support

NOTE: The minimum supported version of Node.js is `v8`.

The client versioning follows the {stack} versioning, this means that
major, minor, and patch releases are done following a precise schedule that
often does not coincide with the https://nodejs.org/en/about/releases/[Node.js release] times.

To avoid support insecure and unsupported versions of Node.js, the
client *will drop the support of EOL versions of Node.js between minor releases*.
Typically, as soon as a Node.js version goes into EOL, the client will continue
to support that version for at least another minor release. If you are using the client
with a version of Node.js that will be unsupported soon, you will see a warning
in your logs (the client will start logging the warning with two minors in advance).

Unless you are *always* using a supported version of Node.js, 
we recommend defining the client dependency in your
`package.json` with the `~` instead of `^`. In this way, you will lock the
dependency on the minor release and not the major. (for example, `~7.10.0` instead
of `^7.10.0`).

[%header,cols=3*]
|===
|Node.js Version
|Node.js EOL date
|End of support

|`8.x`
|December 2019
|`7.11` (early 2021)

|`10.x`
|April 2021
|`7.12` (mid 2021)
|===

[discrete]
[[js-compatibility-matrix]]
=== Compatibility matrix

The library is compatible with all {es} versions since 5.x. We recommend you to
use the same major version of the client as the {es} instance that you are
using.

[%header,cols=2*]
|===
|{es} Version
|Client Version

|`master`
|`master`

|`7.x`
|`7.x`

|`6.x`
|`6.x`

|`5.x`
|`5.x`
|===


[discrete]
==== Browser

WARNING: There is no official support for the browser environment. It exposes
your {es} instance to everyone, which could lead to security issues. We
recommend you to write a lightweight proxy that uses this client instead.
