【问题标题】:OData API for a Azure search index not returning metadataAzure 搜索索引的 OData API 不返回元数据
【发布时间】: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 给我发送电子邮件。

标签: odata azure-cognitive-search


【解决方案1】:

odata.metadata=fullapi-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 对于连接器是否足够。
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多