Azure AI Search でインデクサーのスケジュールを設定する

インデクサーは、プロパティを設定するときにスケジュールに従って実行するように構成 schedule できます。 インデクサーのスケジュール設定が役立つ状況には、次のものがあります。

  • ソース データは時間の経過と共に変化するため、インデクサーによって差分を自動的に処理したい。
  • ソース データは非常に大きく、すべてのコンテンツのインデックスを作成するには定期的なスケジュールが必要です。
  • 複数のインデクサーを使用して複数のソースからインデックスを設定し、競合が減るようにジョブを調整したい。

一般的な 2 時間の処理ウィンドウ内でインデックス作成を完了できない場合は、大量のデータを処理するために 2 時間間隔で実行するようにインデクサーをスケジュールできます。 データ ソースが変更検出ロジックをサポートしている限り、インデクサーは実行のたびに中断したところから自動的に再開できます。

インデクサーがスケジュールに従うと、間隔または開始時刻をクリアするか、true に設定disabledするまで、スケジュールにメインされます。 処理するものがない場合にインデクサーをスケジュールに残しても、システムのパフォーマンスには影響しません。 変更されたコンテンツのチェックは、比較的高速な操作です。

前提条件

  • データ ソースとインデックスを使用して構成された有効なインデクサー。

  • データ ソースでの変更の検出。 Azure Storage と SharePoint には変更の検出が組み込まれています。 Azure SQLAzure Cosmos DB などの他のデータ ソースは手動で有効にする必要があります。

スケジュール定義

スケジュールは、インデクサーの定義の一部です。 プロパティを schedule 省略すると、インデクサーはオンデマンドでのみ実行されます。 プロパティには 2 つの部分があります。

プロパティ 説明
"interval" (必須) 連続する 2 つのインデクサー実行の開始の時間間隔。 設定できる最小の間隔は 5 分、最長は 1440 分 (24 時間) です。 XSD "dayTimeDuration" 値 (ISO 8601 期間値の制限されたサブセット) として書式設定する必要があります。

これのパターンは次のとおりです: P(nD)(T(nH)(nM))

たとえば、15 分ごとの場合は PT15M、2 時間ごとの場合は PT2H です。
"startTime" (省略可能) 開始時刻は世界協定時刻 (UTC) で指定します。 省略すると、現在の時刻が使用されます。 この時刻は過去でもかまいません。その場合、最初の実行はインデクサーが元の開始時刻から継続的に実行されているかのようにスケジュールされます。

次に示すのは、1 月 1 日の午前 0 時に開始され、2 時間ごとに実行されるスケジュールの例です。

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

スケジュールを構成する

スケジュールは、インデクサー定義で指定されます。 スケジュールを設定するには、Azure portal、REST API、または Azure SDK を使用できます。

  1. Azure portal にサインインし、検索サービス ページを開きます。
  2. 左側のナビゲーション ウィンドウで、[インデクサー] を選択します。
  3. インデクサーを開きます。
  4. 設定を選択します。
  5. [スケジュール] まで 下にスクロールし、[時間単位]、[日単位]、[カスタム] のいずれかを選択して、特定の日付、時刻、またはカスタム間隔を設定します。

インデックスの 上部にあるインデクサー定義 (JSON) タブに切り替えて、XSD 形式でスケジュール定義を表示します。

スケジュールの動作

テキストベースのインデックス作成の場合、スケジューラで検索サービスがサポートする数のインデクサー ジョブを開始できます。これは、検索ユニットの数によって決まります。 たとえば、サービスに 3 つのレプリカと 4 つのパーティションがある場合、オンデマンドでもスケジュールに基づいて開始された場合でも、アクティブな実行で 12 個のインデクサー ジョブを使用できます。

スキルベースのインデクサーは、別の実行環境で実行されます。 このため、サービス ユニットの数は、実行できるスキルベースのインデクサー ジョブの数とは関係ありません。 複数のスキルベースのインデクサーを並列で実行できますが、実行環境内のノードの可用性に依存します。

複数のインデクサーを同時に実行できますが、特定のインデクサーは 1 つのインスタンスです。 同じインデクサーの 2 つのコピーを同時に実行することはできません。 スケジュールされた実行の次の開始時刻になってもインデクサーがまだ実行されている場合、現在のジョブが完了できるように、保留中の実行は次のスケジュールされた実行まで延期されます。

さらに具体的な例を示します。 インデクサー スケジュールを、2024 年 1 月 1 日午前 8 時 00 分 (UTC) の開始時刻の間隔で構成するとします。 インデクサーの実行に 1 時間より長くかかると、次のことが起きる可能性があります。

  • 最初のインデクサーの実行は、2024 年 1 月 1 日午前 8 時 (UTC) から開始されます。 この実行には 20 分 (または 1 時間未満の任意の時間) かかるとします。

  • 2 回目の実行は、2022 年 1 月 1 日午前 9 時 00 分 (UTC) 前後に開始されます。 この実行に 70 分 (1 時間より長く) かかり、午前 10 時 10 分 (UTC) まで完了しないとします。

  • 3 回目の実行は午前 10 時 (UTC) に開始するようにスケジュール設定されていますが、その時点で前の実行がまだ終わっていません。 このとき、このスケジュール設定された実行はスキップされます。 インデクサーの次の実行は午前 11 時 (UTC) まで開始しません。

Note

インデクサーが特定のスケジュールに設定されているが、毎回同じドキュメントで繰り返し失敗する場合、インデクサーは、正常に再び進行するまで、少なくとも 2 時間ごとまたは 24 時間ごとに最大間隔で実行を開始します。 基になる問題を修正したと思われる場合は、手動でインデクサーを実行できます。インデックス作成が成功すると、インデクサーは通常のスケジュールに戻ります。

次のステップ

スケジュールに基づいて実行されるインデクサーの場合は、検索サービスから状態を取得することによって操作を監視するか、リソース ログを有効にすることによって詳細情報を取得できます。