如何在Azure搜索中导入Azure Cosmos DB数据

889 阅读5分钟

在本文中,我们将学习如何配置Azure Search实例以从Azure Cosmos DB导入数据。

绪论

Azure Cosmos DB是一个多模型类型的数据库,支持不同类型的API,如Core SQL、Mongo DB、Gremlin等。这使得它成为一个多功能的数据存储库,可以托管各种类型的数据。使用基于搜索机制的数据消费是最流行的数据消费形式之一。Azure搜索是解决Azure云平台上搜索用例的关键服务之一。在上一篇文章中,我们学习了如何创建一个可以与Cosmos DB一起使用的Azure Search实例。一旦有了实例,下一步就是配置Azure Search实例,使其能够与数据源集成,并将记录导入其索引,从而为搜索查询服务。本文将告诉你如何配置Azure Search实例以从Cosmos DB导入数据。

前提条件

要完成这个练习,我们需要有一个具有管理权限的Azure云账户来操作Azure Search和Cosmos DB服务。假设这个设置已经到位。另外,我们需要至少有一个数据库,其中有一个容器,会有一些项目添加到其中。这在我上一篇关于Cosmos DB和Azure Search的文章中解释过,为Azure Cosmos DB创建Azure Search服务实例。假设这个前提条件已经具备,再进行下面的其他步骤。

image.png

配置Azure Cognitive Search

由于我们已经创建了搜索实例,并列在Azure Cosmos DB的Cognitive Search部分,我们可以进入下一步,即连接到数据。数据源显然是Cosmos DB,如下图所示。

image.png

我们需要为正在Azure Search实例中创建的源提供一个数据源名称。下一步是形成所需的连接字符串。我们可以点击选择一个现有的连接,以找到相同配置的Cosmos DB实例列表,即订阅、位置和资源组中存在的搜索实例。一旦我们选择了实例,连接字符串就会自动形成并填充到相关字段中。

image.png

下一步是配置认证机制,该机制将被搜索实例用于连接到Cosmos DB实例。一种选择是使用管理身份,这意味着为Azure搜索实例创建身份,该身份将被赋予访问Azure Cosmos DB实例的必要权限。要为Azure Search创建一个管理身份,请导航到实例,点击左窗格中的身份菜单项,如下图所示。确保状态被设置为开启,如下图所示。保存状态变化,启用系统分配的管理身份,如下图所示。

image.png

管理身份创建后,需要分配所需的权限,以便搜索实例可以从Azure Cosmos DB实例读取数据。点击左侧窗格中的IAM菜单项,点击角色权限,将Cosmos DB Account Reader角色分配给管理身份。

image.png

如果搜索实例以及cosmos db实例处于相同的配置设置中,搜索实例也可以在没有管理身份的情况下访问数据。如果是这种情况,你应该能够找到下拉菜单中列出的数据库名称。一旦我们选择了数据库,托管在数据库中的集合就会被列出。一旦发生这种情况,可以认为搜索实例可以成功连接到Azure Cosmos DB实例。我们可以有选择地指定查询模板,以限制被获取的数据范围。我们可以进入下一个步骤。在我们进入下一步之前,它将验证查询和连接性,然后我们才会看到配置下一步的选项。

image.png

在这一步中,我们可以选择添加任何我们可能想要使用的认知资源与从宇宙数据库中获取的数据,如下所示。

image.png

我们还可以通过这一部分向正在获取的数据添加丰富的内容,如下图所示。其中的一些例子是提取名字、地点、关键短语等。当我们第一次创建索引的时候,我们不打算预先添加这些丰富的内容。所以,我们现在跳过这一步。

image.png

在这一步,我们必须指定索引的名称,它将保存从Azure Cosmos DB实例中获取的数据。默认情况下,键将是select,这是一个典型的集合中项目的标识符字段。如果我们打算创建一个建议者,我们可以指定建议者的名字,并将搜索模式也配置进去。现在,我们可以跳过这个配置,因为它不是强制性的。我们可以根据需要添加或删除字段,并选择我们要检索的字段作为搜索结果的一部分,哪些字段可用于指定搜索条件或过滤器等。根据需要勾选相关字段的复选框。

image.png

在这最后一步,我们需要指定索引器的名称、时间表的频率和任何预先选项,如加密、失败项目的最大限制等。

image.png

这就完成了配置部分,然后我们可以确认创建一个新的搜索索引器。一旦索引器被创建,它就会开始索引过程,它将从Azure Cosmos DB数据库实例中获取数据并进行索引。索引完成后,我们可以使用Azure搜索服务的搜索资源管理器界面,只需指定*作为搜索条件,然后点击搜索按钮。这将导致从索引中返回所有的记录,如下图所示。

image.png

这样,我们就可以把数据从Azure Cosmos DB导入到Azure Search实例中,并启用数据的搜索功能。

总结

在这篇文章中,我们了解了配置Azure Search实例的不同选项,这样它就可以从Azure Cosmos DB中导入数据以启用搜索功能。我们还了解了Azure Search的认证配置,它可以在不同的数据源中使用。