TypeScript support
The client offers a first-class support for TypeScript, shipping a complete set of type definitions of Elasticsearch’s API surface.
The types are not 100% complete yet. Some APIs are missing (the newest ones, e.g. EQL), and others may contain some errors, but we are continuously pushing fixes & improvements. Contribute type fixes and improvements toelasticsearch-specification github repository.
The client is developed against thelatest version of TypeScript. Furthermore, unless you have setskipLibCheck
totrue
, you should configureesModuleInterop
totrue
.
import { Client } from '@elastic/elasticsearch'const client = new Client({ cloud: { id: '<cloud-id>' }, auth: { apiKey: 'base64EncodedKey' }})interface Document { character: string quote: string}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<Document>({ index: 'game-of-thrones', query: { match: { quote: 'winter' } } }) console.log(result.hits.hits)}run().catch(console.log)
You can import the full TypeScript requests & responses definitions as it follows:
import { estypes } from '@elastic/elasticsearch'