在嵌套 json 中搜索(Azure 搜索)

Search in nested json (Azure Search)

我有 JSON 的 CosmosDB (documentDB),看起来像这样:

{
   "id": "59082f71-def1-47cc-j6w2-3fd8c0831e9c",  
   "name": "Bilbo",
   "address": 
   {  
    "street": "bla-bla-bla",        
    "city": "London",   
    "country": "Great Britain"
   }
}

但是当我尝试使用 Azure 搜索时,我似乎无法将 Edm.ComplexType 用作 it is not supported 而且我不能使用 Collection(Edm.String) 因为我有多个字段。

以下是我尝试获取字段的方式:

SELECT c._rid, c.id, c.name, c.address.street as street, c.address.city as city, c.address.country as country FROM c WHERE c._ts >= @HighWaterMark ORDER BY c._ts

您使用的 SELECT 查询看起来不错。如果您通过 Azure 门户(而不是通过 REST API)定义了 Azure 搜索的 data-source\indexer,您可能遇到了一个已知问题,即数据源查询被忽略——我们目前正在努力解决该问题.

同时,这里有一个解决方法:

  1. 确保您的数据源查询确实被忽略了:在 Azure 门户中,转到搜索服务的“概述”页面,单击“数据源”选项卡,然后select 您的数据源。 在数据源页面中,select“编辑”- 您是否在“查询”文本框中看到正确的 SELECT 查询?如果您的查询不正确,请单击“确定”
  2. 确保您的索引包含您 wanted\selected(街道、城市和国家/地区)的其他字段: 再次转到“概览”页面,select 您的索引来自“索引”选项卡,然后 select 索引页面中的“字段”选项卡 - 如果缺少某些字段,您可以添加它们并单击“保存”
  3. 重新运行 或重新创建您的索引器: 您可以重新运行 您现有的索引器,方法是导航回“概述”页面,select从“索引器”选项卡中设置索引器,单击“重置”,然后单击“运行” 或者,您可以删除现有的索引器(和索引,如果您那里没有您需要的任何数据),然后通过单击“概述”页面中的“导入数据”来创建一个新的索引器——这次 select在第一步中输入“现有数据源”。

希望对您有所帮助。