transport.request编辑

您可能需要使用客户端不支持的 API 与 Elasticsearch 通信,为了解决此问题,您可以直接调用 client.transport.request,这是客户端在使用 API 方法时与 Elasticsearch 通信的内部实用程序。

使用 transport.request 方法时,您必须提供执行 HTTP 调用所需的所有参数,例如 methodpathquerystringbody

如果您发现自己经常使用此方法,请考虑使用 client.extend,这将使您的代码看起来更简洁,更容易维护。

'use strict'

const { Client } = require('@elastic/elasticsearch')
const client = new Client({
  cloud: { id: '<cloud-id>' },
  auth: { apiKey: 'base64EncodedKey' }
})

async function run () {
  const bulkResponse = await client.bulk({
    refresh: true,
    operations: [
      { index: { _index: 'game-of-thrones' } },
      {
        character: 'Ned Stark',
        quote: 'Winter is coming.'
      },

      { index: { _index: 'game-of-thrones' } },
      {
        character: 'Daenerys Targaryen',
        quote: 'I am the blood of the dragon.'
      },

      { index: { _index: 'game-of-thrones' } },
      {
        character: 'Tyrion Lannister',
        quote: 'A mind needs books like a sword needs a whetstone.'
      }
    ]
  })

  if (bulkResponse.errors) {
    console.log(bulkResponse)
    process.exit(1)
  }

  const response = await client.transport.request({
    method: 'POST',
    path: '/game-of-thrones/_search',
    body: {
      query: {
        match: {
          quote: 'winter'
        }
      }
    },
    querystring: {}
  })

  console.log(response)
}

run().catch(console.log)