All Projects → elastic → Elasticsearch Js

elastic / Elasticsearch Js

Licence: apache-2.0
Official Elasticsearch client library for Node.js

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Elasticsearch Js

Jenkins Rest
Java client, built on top of jclouds, for working with Jenkins REST API
Stars: ✭ 201 (-95.84%)
Mutual labels:  rest, client
Elasticsearch Net
Elasticsearch.Net & NEST
Stars: ✭ 3,181 (-34.11%)
Mutual labels:  elasticsearch, client
Verb
Organize and send HTTP requests from Emacs
Stars: ✭ 205 (-95.75%)
Mutual labels:  rest, client
Restrequest4delphi
API to consume REST services written in any programming language with support to Lazarus and Delphi
Stars: ✭ 162 (-96.64%)
Mutual labels:  rest, client
Bitcoin Core
A modern Bitcoin Core REST and RPC client.
Stars: ✭ 379 (-92.15%)
Mutual labels:  rest, client
Pysnow
Python library for the ServiceNow REST API
Stars: ✭ 162 (-96.64%)
Mutual labels:  rest, client
Httpie
As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. https://twitter.com/httpie
Stars: ✭ 53,052 (+998.84%)
Mutual labels:  rest, client
Swagger Codegen Play Scala
Swagger client generator which is based on the PlayWS library
Stars: ✭ 9 (-99.81%)
Mutual labels:  rest, client
Fakerest
Patch fetch/XMLHttpRequest to fake a REST API server in the browser, based on JSON data.
Stars: ✭ 350 (-92.75%)
Mutual labels:  rest, client
Go Elasticsearch
The official Go client for Elasticsearch
Stars: ✭ 3,817 (-20.94%)
Mutual labels:  elasticsearch, client
Anterofit
Strongly typed, asynchronous REST client framework for Rust.
Stars: ✭ 125 (-97.41%)
Mutual labels:  rest, client
Purest
REST API Client Library
Stars: ✭ 448 (-90.72%)
Mutual labels:  rest, client
Cloudflare
An asynchronous Ruby wrapper for the CloudFlare V4 API.
Stars: ✭ 113 (-97.66%)
Mutual labels:  rest, client
Simple Web Server
A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications.
Stars: ✭ 2,261 (-53.17%)
Mutual labels:  rest, client
Flickr Sdk
Almost certainly the best Flickr API client in the world for node and the browser
Stars: ✭ 104 (-97.85%)
Mutual labels:  rest, client
Elastix
A simple Elasticsearch REST client written in Elixir.
Stars: ✭ 231 (-95.22%)
Mutual labels:  rest, elasticsearch
Elasticsearch Ruby
Ruby integrations for Elasticsearch
Stars: ✭ 1,848 (-61.72%)
Mutual labels:  elasticsearch, client
Httpotion
(soft-deprecated) HTTP client for Elixir (use Tesla please)
Stars: ✭ 723 (-85.02%)
Mutual labels:  rest, client
Elasticsearch Py
Official Elasticsearch client library for Python
Stars: ✭ 3,486 (-27.8%)
Mutual labels:  elasticsearch, client
Elasticsearch Rs
Official Elasticsearch Rust Client
Stars: ✭ 412 (-91.47%)
Mutual labels:  elasticsearch, client

Elasticsearch Node.js client

js-standard-style Build Status codecov NPM downloads

The official Node.js client for Elasticsearch.


Note: In the past months we have worked on the new Elasticsearch Node.js client and you can use it by following the instructions below. If you're going to use the legacy one or report an issue, however, please check out elastic/elasticsearch-js-legacy.


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.

Install

npm install @elastic/elasticsearch

Node.js support

NOTE: The minimum supported version of Node.js is v12.

The client versioning follows the Elastic Stack versioning, this means that major, minor, and patch releases are done following a precise schedule that often does not coincide with the 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).

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)

Compatibility

Language clients are forward compatible; meaning that clients support communicating with greater or equal minor versions of Elasticsearch. Elasticsearch language clients are only backwards compatible with default distributions and without guarantees made.

Elasticsearch Version Client Version
master master
7.x 7.x
6.x 6.x
5.x 5.x

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

npm install @elastic/elasticsearch@<major>

Browser

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

Documentation

Quick start

First of all, require the client and initialize it:

const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://localhost:9200' })

You can use both the callback-style API and the promise-style API, both behave the same way.

// promise API
const result = await client.search({
  index: 'my-index',
  body: {
    query: {
      match: { hello: 'world' }
    }
  }
})

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

The returned value of every API call is formed as follows:

{
  body: object | boolean
  statusCode: number
  headers: object
  warnings: [string]
  meta: object
}

Let's see a complete example!

'use strict'

const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://localhost:9200' })

async function run () {
  // Let's start by indexing some data
  await client.index({
    index: 'game-of-thrones',
    // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
    body: {
      character: 'Ned Stark',
      quote: 'Winter is coming.'
    }
  })

  await client.index({
    index: 'game-of-thrones',
    // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
    body: {
      character: 'Daenerys Targaryen',
      quote: 'I am the blood of the dragon.'
    }
  })

  await client.index({
    index: 'game-of-thrones',
    // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
    body: {
      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 { body } = await client.search({
    index: 'game-of-thrones',
    // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
    body: {
      query: {
        match: { quote: 'winter' }
      }
    }
  })

  console.log(body.hits.hits)
}

run().catch(console.log)

Install multiple versions

If you are using multiple versions of Elasticsearch, you need to use multiple versions of the client. In the past, install multiple versions of the same package was not possible, but with npm v6.9, you can do that via aliasing.

The command you must run to install different version of the client is:

npm install <alias>@npm:@elastic/elasticsearch@<version>

So for example if you need to install 7.x and 6.x, you will run

npm install es6@npm:@elastic/elasticsearch@6
npm install es7@npm:@elastic/elasticsearch@7

And your package.json will look like the following:

"dependencies": {
  "es6": "npm:@elastic/elasticsearch@^6.7.0",
  "es7": "npm:@elastic/elasticsearch@^7.0.0"
}

You will require the packages from your code by using the alias you have defined.

const { Client: Client6 } = require('es6')
const { Client: Client7 } = require('es7')

const client6 = new Client6({ node: 'http://localhost:9200' })
const client7 = new Client7({ node: 'http://localhost:9201' })

client6.info(console.log)
client7.info(console.log)

Finally, if you want to install the client for the next version of Elasticsearch (the one that lives in Elasticsearch’s master branch), you can use the following command:

npm install esmaster@github:elastic/elasticsearch-js

License

This software is licensed under the Apache 2 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].