Azure 搜索索引的 OData API 不返回元数据
Posted
技术标签:
【中文标题】Azure 搜索索引的 OData API 不返回元数据【英文标题】:OData API for a Azure search index not returning metadata 【发布时间】:2020-01-09 15:41:24 【问题描述】:我们遇到了 Azure 搜索索引的 OData API 问题,它没有返回元数据。我们能够执行基于 OData 的查询,但无法访问元数据
我们的期望是 Odata 端点
https://search-service-name.search.windows.net/indexes/index-name?api-version=2019-05-06&api-key =XXXXXXXXXXXX&odata.metadata=full
应该返回元数据。 我们尝试过的其他端点
https://search-service-name.search.windows.net/indexes('index-name')/$metadata?api-version=2019 -05-06&api-key=XXXXXXXX&odata.metadata=full
如果我们使用设置的 api-key 进行查询,我们会得到错误 “错误”: “代码”: ””, "message": "授权失败。"
使用 Admin key 作为 api-key,返回的错误是 "Message": "URI 查询字符串中不允许使用给定的 API 密钥。"
还有其他人能够获得与 Azure 搜索索引一起使用的完整 OData API 吗?
谢谢
【问题讨论】:
我很好奇 -- 为什么需要完整的 OData 元数据? 我们目前正在研究 odata.metadata=minimal 是否足以将搜索索引文档配置为 SF 中的外部对象。 感谢您的信息。我很想了解更多关于这种情况的信息。根据您的使用模式,直接通过 OData 从 Azure 搜索中提取数据可能不是一个好主意。如果您有兴趣继续此对话,请随时通过 microsoft 的 bruce dot johnston 给我发送电子邮件。 【参考方案1】:odata.metadata=full
和 api-key
都需要作为 HTTP 标头而不是查询字符串参数传递。 api-key
是它自己的标头,而 odata.metadata=full
是一个参数,应该是 Accept
标头的一部分,如下所示:application/json;odata.metadata=full
。
也就是说,除非您尝试将 Azure 搜索与启用了 OData 的客户端一起使用,但您无法更改其代码,否则您不需要完整的 OData 元数据。最多您需要odata.metadata=minimal
为使用继承的部分 REST API 包含类型注释(例如,在为索引器配置分析器、技能或更改/删除检测策略时)。
【讨论】:
谢谢。我们能够让它与 HTTP 标头一起工作。我们将 API 与启用 OData 的客户端(SF.com 外部数据对象 ~ SF 内的虚拟实体)一起使用。我们正在分析 odata.metadata=minimal 对于连接器是否足够。以上是关于Azure 搜索索引的 OData API 不返回元数据的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法确定 Azure 认知搜索中的索引器索引了哪些文件?
如何使用 OData 筛选器筛选 Azure 表存储中的布尔值?