在Azure搜索上自动索引分区的CosmosDb集合

问题描述 投票:0回答:1

我们正在做一些从CosmosDb集合中自动索引的工作。对此集合进行分区,以便能够无限制地增加RU。

我们想为每个CosmosDb分区创建一个Azure搜索索引,但是从CosmosDb读取分区键提要会返回分区键(例如“0”,“1”等),而不是分区集合的实际值(在我们的案例文化'en-US','fr-FR'等),这意味着在Azure Search上创建数据源时,很难以编程方式动态创建数据源,索引和索引器。

我们使用容器查询来过滤一些文档(并非所有文档都需要编入索引)以进行索引,但有没有办法指定CosmosDb分区键或在SQL查询中以另一种方式指定它而不是尝试过滤在分区键字段(在我们的案例'/ Culture')?

azure-cosmosdb azure-search
1个回答
0
投票

您正在读取的源似乎返回分区键范围而不是已定义的分区键值。如果您不知道,Cosmos DB会将多个逻辑分区键值映射到引擎盖下的单个物理分区键范围,以便最好地利用您的存储。 Some documentation on that is here.

除了在查询本身上添加分区键过滤器之外,Azure搜索目前无需过滤逻辑或物理分区。但是,您应该能够根据需要以编程方式为每个数据源/索引器创建此查询,方法是使用以下查询从Cosmos DB集合中获取所有不同的分区键值,而不是使用分区键范围提要:

SELECT DISTINCT c.Culture FROM c

然后循环遍历结果,为每个键值生成以下查询:

SELECT * FROM c WHERE c.Culture ==分区键值

© www.soinside.com 2019 - 2024. All rights reserved.