从 Azure 搜索文档中,我知道我们必须获取一些搜索信息才能设置 appinsights 遥测。
问题是:如何从@azure/search-documents SearchDocumentResult 获取 SearchID 信息?
从 Azure 搜索文档中,我知道我们必须获取一些搜索信息才能设置 appinsights 遥测。
问题是:如何从@azure/search-documents SearchDocumentResult 获取 SearchID 信息?
使用该@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
.
我假设您更关心搜索查询遥测而不是索引器遥测,但如果我错了,请纠正我。这个文档页面有用吗?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');
如果我误解了这个问题,请告诉我。