TypeScript 支持

编辑

该客户端为 TypeScript 提供一流的支持,附带 Elasticsearch API 表面的完整类型定义集。

这些类型并非 100% 完整。一些 API 缺失(例如,最新的 EQL),另一些可能包含一些错误,但我们正在不断地推进修复和改进。请向 elasticsearch-specification github 仓库 贡献类型修复和改进。

该客户端是根据最新版本的 TypeScript 开发的。此外,除非你将 skipLibCheck 设置为 true,否则你应该将 esModuleInterop 配置为 true

示例

编辑
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)

请求和响应类型

编辑

你可以按如下方式导入完整的 TypeScript 请求和响应定义

import { estypes } from '@elastic/elasticsearch'

如果你需要带有主体的旧版定义,可以执行以下操作

import { estypesWithBody } from '@elastic/elasticsearch'