如何在Azure AI Search中指定CosmosDB特定集合创建索引/索引器?
Azure AI Search读取CosmosDB指定集合数据的解决方案
问题根源
你当前的问题出在共用了同一个CosmosDB数据源,该数据源默认关联的是Collection1,导致两个索引器都从Collection1拉取数据。Index2要读取的C、D字段在Collection1中不存在,因此返回null,甚至会因指定不存在字段为索引键而报错。
解决步骤
1. 为每个集合创建独立数据源
Azure AI Search的CosmosDB数据源需要明确指定目标集合,不能共用一个数据源读取多个集合:
- 可视化创建:在Azure门户创建CosmosDB类型的数据源时,在「容器」选项中选择Collection2;
- REST API创建:在数据源配置的
container参数中指定集合名称,示例如下:
{ "name": "dataSource-collection2", "type": "cosmosdb", "credentials": { "connectionString": "你的CosmosDB连接字符串" }, "container": { "name": "Collection2", "query": null }, "dataChangeDetectionPolicy": { "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy", "highWaterMarkColumnName": "_ts" } }
2. 关联Index2到新数据源
修改indexer2的配置,将dataSourceName替换为刚创建的dataSource-collection2,确保索引器指向Collection2。
3. 重新运行索引器
清除之前的索引器运行记录,启动indexer2,此时索引器会读取Collection2的文档,Index2就能正确获取C、D字段的值。
预期结果
重新运行后,Index2将返回Collection2的文档:
{ "_id": 2, "C": "C", "D": "D" }
内容的提问来源于stack exchange,提问作者ban_ana
相关产品推荐
相关产品推荐

