是否可以使用Azure Search将(使用API)和(使用索引器)数据推送到同一个索引中?

是否可以使用Azure Search将(使用API)和(使用索引器)数据推送到同一个索引中?,azure,azure-sql-database,azure-cognitive-search,azure-search-.net-sdk,Azure,Azure Sql Database,Azure Cognitive Search,Azure Search .net Sdk,我在Azure搜索中有一个名为Hotels的索引 我在Azure SQL中有一个hotels表,它的架构与Azure搜索中找到的hotels索引的副本相同 我在创建/更新/删除时从后端推送到Azure SQL表和Azure搜索 在一个场景中,我的数据被推送到Azure SQL但未能推送到Azure Search。是否可以将我的Azure SQL Hotels表作为索引器,以便索引器可以将数据同步到我的Azure Search index(Hotels),而这些索引无法从我的后端推送到Azure

我在Azure搜索中有一个名为Hotels的索引

我在Azure SQL中有一个hotels表,它的架构与Azure搜索中找到的hotels索引的副本相同

我在创建/更新/删除时从后端推送到Azure SQL表和Azure搜索


在一个场景中,我的数据被推送到Azure SQL但未能推送到Azure Search。是否可以将我的Azure SQL Hotels表作为索引器,以便索引器可以将数据同步到我的Azure Search index(Hotels),而这些索引无法从我的后端推送到Azure Search?是,您可以混合使用push和pull,也可以有多个针对同一索引的pull索引器。当一部分数据在一个数据源中,另一部分在另一个数据源中时,我们经常看到这种情况,其中索引是它们通过键进行协调的收敛点

您所描述的模式并不常见,但一般来说应该是可行的。您必须考虑写入与索引器写入冲突的情况,并确保您所做的写入最终获胜。此外,如果您选择此路径,请确保配置更改检测(如果您删除行,则配置删除检测)策略,以便我们以增量方式从SQL编制索引,而不是在每次运行时都准备好所有内容


如果您担心写操作丢失,另一种方法是将所有写操作推送到队列中,然后从队列中拉入Azure Search。这样,您就有了一个单一的写入流,而不是两个。

是的,您既可以混合使用推式和拉式,也可以有多个针对同一索引的拉式索引器。当一部分数据在一个数据源中,另一部分在另一个数据源中时,我们经常看到这种情况,其中索引是它们通过键进行协调的收敛点

您所描述的模式并不常见,但一般来说应该是可行的。您必须考虑写入与索引器写入冲突的情况,并确保您所做的写入最终获胜。此外,如果您选择此路径,请确保配置更改检测(如果您删除行,则配置删除检测)策略,以便我们以增量方式从SQL编制索引,而不是在每次运行时都准备好所有内容


如果您担心写操作丢失,另一种方法是将所有写操作推送到队列中,然后从队列中拉入Azure Search。这样,您就有了一个而不是两个写入流。

谢谢您的回答@pablo,您建议使用队列吗?或者他们的Azure搜索是否能够从中提取?该队列是在.Net中配置还是可以在Azure Portal中配置?Azure存储队列简单有效。还有更复杂的选择,比如服务巴士,但我认为你不需要它。Azure搜索中没有对此的直接支持。您可以使用连接到队列的Azure函数,并将内容推送到Azure搜索中。它很便宜,而且您没有可监控的资源,因为函数会处理所有事情。您需要查看您推送的文档数,如果太多考虑批处理文档(例如,推送每个队列项的多个更改,而不仅仅是一个)。谢谢您的回答@ Pabro,您建议使用队列吗?或者他们的Azure搜索是否能够从中提取?该队列是在.Net中配置还是可以在Azure Portal中配置?Azure存储队列简单有效。还有更复杂的选择,比如服务巴士,但我认为你不需要它。Azure搜索中没有对此的直接支持。您可以使用连接到队列的Azure函数,并将内容推送到Azure搜索中。它很便宜,而且您没有可监控的资源,因为函数会处理所有事情。您需要查看您推送的文档数,如果太多考虑批处理文档(例如,推送每个队列项的多个更改,而不只是一个)。