Azure SQL DB 与 Azure 搜索的自动索引/同步如何工作?

Posted

技术标签:

【中文标题】Azure SQL DB 与 Azure 搜索的自动索引/同步如何工作?【英文标题】:How does Auto-indexing/sync of Azure SQL DB with Azure Search Works? 【发布时间】:2015-10-16 17:51:37 【问题描述】:

根据以下文章,

http://feedback.azure.com/forums/263029-azure-search/suggestions/6540846-auto-indexing-of-azure-sql-db

https://azure.microsoft.com/en-us/documentation/articles/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers-2015-02-28/

Azure 搜索将自动同步/更新 SQL 表中已修改的行,并在 Azure 搜索索引中更新相同的行。但是当我更新源表时,它似乎根本不会影响我的 Azure 搜索索引。

谁能澄清 Azure SQL DB 与 Azure 搜索的自动索引/同步的真正含义是什么?

注意:严格按照文章中给出的说明进行操作。

数据源

发布https://servicename.search.windows.net/datasources?api-version=2015-02-28 api键: 内容类型:application/json

“名称”:“myazuresql 数据源”, “类型”:“azuresql”, “凭据”:“connectionString”:“服务器=tcp:xxxxyyyy.database.windows.net.database.windows.net,1433;数据库=dvdlist;用户ID=aaaabbbb;密码=aaaaabbbbb;Trusted_Connection=True;加密=False ;连接超时=30;", “容器”:“名称”:“dvdlist”, “dataChangeDetectionPolicy”:“@odata.type”:“#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy”,“highWaterMarkColumnName”:“id”, “dataDeletionDetectionPolicy”:“@odata.type”:“#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy”,“softDeleteColumnName”:“IsDeleted”,“softDeleteMarkerValue”:“true”

索引器

发布https://servicename.search.windows.net/indexers?api-version=2015-02-28 api键: 内容类型:application/json

“名称”:“myazuresqlindexer”, "dataSourceName" : "myazuresql 数据源", “targetIndexName”:“sqlazureindex”

【问题讨论】:

您使用的是 SQL DB v12 吗?我的预感是这个功能需要在数据库上启用更改跟踪,而这仅在 V12 中支持。否则,您需要确保您的高水位标记更改检测策略是正确的。 您好 Ilyas,​​Sirisha 是正确的 - 集成更改跟踪策略仅适用于 SQL DB v12 数据库。如果您使用高水位标记策略,则需要确保您选择作为高水位标记的列实际上具有适当的语义(rowversion 列是高水位标记列的良好候选者)。 嗨尤金,请为延迟回复道歉。我确实只在 SQL DV v12 以及 High Watermark 策略和 SoftDeleteColumnDeletionDetectionPolicy 上尝试过,但没有运气。我已经编辑了我的问题以包括索引器和数据源的 json sn-ps。请参考! @EugeneShvets-MSFT,我对与 Azure SQL DB 自动同步的理解是,一旦我更新任何记录或软删除任何记录并更新行版本/软删除列,它必须立即同步使用 Azure 搜索并将修改后的结果集返回给最终用户。请确认这是否是预期的行为! 您好 Ilyas,​​您对数据的更改不会立即反映出来 - 它们会根据您为索引器指定的计划进行反映。如果索引器每 5 分钟运行一次,则延迟最长可达 5 分钟,依此类推。看起来您没有为索引器指定计划,因此它仅在您明确调用它时运行。 【参考方案1】:

基本上在 Azure 搜索中,我们必须使用特定列创建索引,并且我们需要不时使用调度程序以定义的索引格式将数据推送到 Azure 搜索索引。

Azure SQL DB 与 Azure 搜索的自动索引/同步是一种使此过程变得简单和可管理的技术,其中 Azure sql 管理同步过程。

【讨论】:

如果您能清楚地阅读我的原始问题,您会注意到我理解这一点,但我在实际操作时遇到了麻烦。【参考方案2】:

即使使用更改跟踪策略,在索引器运行之前,索引上的数据也不会更新。您可以将索引器设置为按计划自动运行(我上次检查过,最常见的做法是每 5 分钟一次)或使用 api 显式运行索引器。虽然如果您需要经常更新,您可能应该考虑使用 api 来发布文档,而不是依赖索引器。

【讨论】:

以上是关于Azure SQL DB 与 Azure 搜索的自动索引/同步如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

最新的Azure SQL数据库实例中的Azure搜索服务与全文搜索?

哪个 DB 驱动程序将 DbVisualiser 与 Azure SQL 结合使用?

是否可以从 Azure SQL DB 连接 Azure SQL 托管实例?

Azure 认知搜索和 Cosmos DB RU 消耗

性能缓慢 Azure“Web 应用”+ Azure SQL DB

sql Azure Cosmos DB