[[introduction]] == Introduction This is the official Node.js client for {es}. This page gives a quick overview about the features of the client. [discrete] === Features * One-to-one mapping with REST API. * Generalized, pluggable architecture. * Configurable, automatic discovery of cluster nodes. * Persistent, Keep-Alive connections. * Load balancing across all available nodes. * Child client support. * TypeScript support out of the box. [discrete] === Quick start [source,js] ---- 'use strict' const { Client } = require('@elastic/elasticsearch') const client = new Client({ cloud: { id: '' }, auth: { apiKey: 'base64EncodedKey' } }) async function run () { // Let's start by indexing some data await client.index({ index: 'game-of-thrones', document: { character: 'Ned Stark', quote: 'Winter is coming.' } }) await client.index({ index: 'game-of-thrones', document: { character: 'Daenerys Targaryen', quote: 'I am the blood of the dragon.' } }) await client.index({ index: 'game-of-thrones', document: { character: 'Tyrion Lannister', quote: 'A mind needs books like a sword needs a whetstone.' } }) // here we are forcing an index refresh, otherwise we will not // get any result in the consequent search await client.indices.refresh({ index: 'game-of-thrones' }) // Let's search! const result= await client.search({ index: 'game-of-thrones', query: { match: { quote: 'winter' } } }) console.log(result.hits.hits) } run().catch(console.log) ---- TIP: For an elaborate example of how to ingest data into Elastic Cloud, refer to {cloud}/ec-getting-started-node-js.html[this page]. [discrete] ==== Install multiple versions If you are using multiple versions of {es}, you need to use multiple versions of the client as well. In the past, installing multiple versions of the same package was not possible, but with `npm v6.9`, you can do it via aliasing. To install different version of the client, run the following command: [source,sh] ---- npm install @npm:@elastic/elasticsearch@ ---- For example, if you need to install `7.x` and `6.x`, run the following commands: [source,sh] ---- npm install es6@npm:@elastic/elasticsearch@6 npm install es7@npm:@elastic/elasticsearch@7 ---- Your `package.json` will look similar to the following example: [source,json] ---- "dependencies": { "es6": "npm:@elastic/elasticsearch@^6.7.0", "es7": "npm:@elastic/elasticsearch@^7.0.0" } ---- Require the packages from your code by using the alias you have defined. [source,js] ---- const { Client: Client6 } = require('es6') const { Client: Client7 } = require('es7') const client6 = new Client6({ cloud: { id: '' }, auth: { apiKey: 'base64EncodedKey' } }) const client7 = new Client7({ cloud: { id: '' }, auth: { apiKey: 'base64EncodedKey' } }) client6.info().then(console.log, console.log) client7.info().then(console.log, console.log) ---- Finally, if you want to install the client for the next version of {es} (the one that lives in the {es} main branch), use the following command: [source,sh] ---- npm install esmain@github:elastic/elasticsearch-js ---- WARNING: This command installs the main branch of the client which is not considered stable.