[[introduction]]
== Introduction

The official Node.js client for Elasticsearch.

=== Features
* One-to-one mapping with REST API.
* Generalized, pluggable architecture.
* Configurable, automatic discovery of cluster nodes.
* Persistent, Keep-Alive connections.
* Load balancing (with pluggable selection strategy) across all available nodes.
* TypeScript support out of the box.

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

=== Compatibility
The minimum supported version of Node.js is `v8`.

The library is compatible with all Elasticsearch versions since 5.x, but you should use the same major version of the Elasticsearch instance that you are using.
----
# Elasticsearch 7.x
@elastic/elasticsearch@7

# Elasticsearch 6.x
@elastic/elasticsearch@6

# Elasticsearch 5.x
@elastic/elasticsearch@5
----

=== Usage
[source,js]
----
const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://localhost:9200' })

// promise API
const result = await client.search({
  index: 'my-index',
  body: { foo: 'bar' }
})

// callback API
client.search({
  index: 'my-index',
  body: { foo: 'bar' }
}, (err, result) => {
  if (err) console.log(err)
})
----
