如何使用 azure search javascript sdk 设置 Appinsights

How to setup Appinsights with azure search javascript sdk

从 Azure 搜索文档中我知道我们必须获取一些搜索信息才能设置 appinsights 遥测。

问题是:如何从@azure/search-documents SearchDocumentResult 获取 SearchID 信息?

我假设您更关心搜索查询遥测而不是索引器遥测,但如果我错了请纠正我。这个文档页面有帮助吗? https://docs.microsoft.com/azure/search/search-traffic-analytics

在该页面中,设置 searchId 的方法如下:

request.setRequestHeader("x-ms-azs-return-searchid", "true");
request.setRequestHeader("Access-Control-Expose-Headers", "x-ms-azs-searchid");
var searchId = request.getResponseHeader('x-ms-azs-searchid');

如果我误解了这个问题,请告诉我。

使用 @azure/search-documents 模块,您可以设置客户端并将自定义 headers 添加到操作中,如下所示:

const { SearchClient, AzureKeyCredential } = require("@azure/search-documents");

const indexName = "nycjobs";
const apiKey = "252044BE3886FE4A8E3BAA4F595114BB";

const client = new SearchClient(
  `https://azs-playground.search.windows.net/`,
  indexName,
  new AzureKeyCredential(apiKey)
);

async function main() {
  var searchId = '';

  const searchResults = await client.search('Microsoft', {
    top: 3,
    requestOptions: {
      customHeaders: {
        'Access-Control-Expose-Headers': 'x-ms-azs-searchid',
        'x-ms-azs-return-searchid': 'true'
      },
      shouldDeserialize: (response) => {
        searchId = response.headers.get('x-ms-azs-searchid');
        return true;
      }
    }
  });

  console.log(`Search ID: ${searchId}\n`);

  for await (const result of searchResults.results) {
    console.log(`${result.document.business_title}\n${result.document.job_description}\n`);
  }
}

似乎目前唯一的方法是 shouldDeserialize 回调,如示例所示,因为当 [=18] 时,它会在反序列化之前为您提供包括 headers =] 从某些 objects 中剥离,例如 search.

返回的分页响应 objects