2

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

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

4

2 回答 2

2

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

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示例中所示的回调,因为当标头从某些对象(例如由search.

于 2021-01-28T00:45:13.243 回答
0

我假设您更关心搜索查询遥测而不是索引器遥测,但如果我错了,请纠正我。这个文档页面有用吗?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');

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

于 2021-01-26T16:26:30.630 回答