你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 认知搜索中计划索引器

在索引器定义中设置“schedule”属性时,可以将索引器配置为按计划运行。 默认情况下,在创建索引器后,该索引器会立即运行一次。 然后,可以按需或按计划再次运行它。 适合配置按计划运行索引器的一些情况包括:

  • 源数据会随着时间的推移而变化,应让索引器自动处理差异。

  • 搜索索引将从多个数据源填充,应让索引器作业错开以减少冲突。

  • 源数据非常大,需要在随时间推移展开索引器处理。

    索引器作业的最大运行时间为 2 小时或 24 小时, (此时间段将因不同实现因素而有所不同,这些实现因素不会公开) 。 如果无法在最长间隔内完成编制索引,则可以配置一项计划,每 2 小时运行一次。 索引器可以根据内部高位线标记的上次结束的索引位置,自动从停用位置开始选取。 按 2 小时的定期计划运行索引器可以 (数百万个文档) 处理非常大的数据集。 有关对大量数据编制索引的详细信息,请参阅如何在 Azure 认知搜索中为大型数据集编制索引

系统必备

  • 使用数据源和索引配置的有效索引器。

  • 数据源中的更改检测。 Azure 存储和 SharePoint 内置了更改检测功能。 其他数据源(如 Azure SQLAzure Cosmos DB)必须手动启用。

计划定义

计划是索引器定义的一部分。 如果忽略“计划”属性,则索引器将仅按需运行。 属性包含两个部分。

属性 说明
"interval" (必需)连续两次执行索引器间隔的时间量。 允许的最短时间间隔为 5 分钟,最长为 1440 分钟(24 小时)。 必须将其格式化为 XSD“dayTimeDuration”值(ISO 8601 持续时间值的受限子集)。

它的模式为:P(nD)(T(nH)(nM))

示例:PT15M 为每隔 15 分钟,PT2H 为每隔 2 小时。
"startTime" (可选)以协调世界时 (UTC) 指定开始时间。 如果忽略,则使用当前时间。 此时间可以是过去的时间,在此情况下,计划的第一次执行的运行方式如同索引器在原始开始时间之后连续运行。

以下示例是从 1 月 1 日午夜开始每 50 分钟运行一次的计划。

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT50M", "startTime" : "2022-01-01T00:00:00Z" }
}

配置日程安排

计划在索引器定义中指定。 若要设置计划,可以使用 Azure 门户、REST API 或 Azure SDK。

  1. 登录到 Azure 门户,然后打开搜索服务页面。
  2. 在“概述”页上,选择“索引”选项卡。
  3. 选择索引器。
  4. 选择“设置”。
  5. 向下滚动到“计划”,然后选择“每小时”、“每天”或“自定义”以设置特定日期、时间或自定义间隔。

计划行为

对于基于文本的索引编制,计划程序可以启动搜索服务支持的尽可能多的索引器作业,这取决于搜索单位的数量。 例如,如果该服务具有三个副本和四个分区,你通常可以有十二个索引器作业处于活动执行状态,无论是按需启动还是按计划启动。

基于技能的索引器在不同的执行环境中运行。 因此,服务单元的数量与你可以运行的基于技能的索引器作业的数量无关。 多个基于技能的索引器可以并行运行,但这样做会依赖于执行环境中的节点可用性。

虽然多个索引器可以同时运行,但给定的索引器是单个实例。 不能同时运行同一索引器的两个副本。 如果索引器碰巧在其下一次计划执行设置为开始时仍在运行,则挂起的执行将推迟到下一次计划执行,从而允许当前作业完成。

让我们考虑更具体的示例。 假设我们要配置一个索引器计划,其间隔为每小时,开始时间为 2021 年 6 月 1 日上午 8:00:00 UTC。 下面是索引器运行时间超过一小时时可能出现的情况:

  • 第一次索引器执行的开始时间为 2021 年 6 月 1 日上午 8:00 (UTC) 或近似时间。 假设此执行需要 20 分钟(或小于 1 小时的任何时间)。

  • 第二次索引器执行的开始时间为 2021 年 6 月 1 日上午 9:00 (UTC) 或近似时间。 假设此执行耗时 70 分钟(超过 1 小时),并且在上午 10:10 (UTC) 之前无法完成。

  • 第三次执行的计划开始时间为上午 10:00 (UTC),但此时上一次执行仍在运行。 那么,将会跳过此计划的执行。 索引器的下一次执行在上午 11:00 (UTC) 之前不会开始。

注意

如果索引器设置为特定计划,但每次在同一文档上都反复失败,则索引器将开始运行频率较低的间隔 (最大间隔至少每 2 小时或 24 小时一次,具体取决于不同的实现因素) ,直到它再次成功取得进展为止。 如果认为基本问题已修复,则可以手动运行索引器,如果索引成功,索引器将恢复为其常规计划。

后续步骤

对于按计划运行的索引器,可以通过从搜索服务检索状态来监视操作,也可以通过启用资源日志记录来获取详细信息。