WARNING: Version 5.x has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
A complete example
editA complete example
editimport { Client, // Object that contains the type definitions of every API method RequestParams, // Interface of the generic API response ApiResponse, } from '@elastic/elasticsearch' const client = new Client({ node: 'http://localhost:9200' }) // Define the type of the body for the Search request interface SearchBody { query: { match: { foo: string } } } // Complete definition of the Search response interface ShardsResponse { total: number; successful: number; failed: number; skipped: number; } interface Explanation { value: number; description: string; details: Explanation[]; } interface SearchResponse<T> { took: number; timed_out: boolean; _scroll_id?: string; _shards: ShardsResponse; hits: { total: number; max_score: number; hits: Array<{ _index: string; _type: string; _id: string; _score: number; _source: T; _version?: number; _explanation?: Explanation; fields?: any; highlight?: any; inner_hits?: any; matched_queries?: string[]; sort?: string[]; }>; }; aggregations?: any; } // Define the interface of the source object interface Source { foo: string } async function run (): Promise<void> { // Define the search parameters const searchParams: RequestParams.Search<SearchBody> = { index: 'test', body: { query: { match: { foo: 'bar' } } } } // Craft the final type definition const response: ApiResponse<SearchResponse<Source>> = await client.search(searchParams) console.log(response.body) } run().catch(console.log)