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

注

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

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

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

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

スケジュールにインデクサーを配置した後は、間隔または開始時刻をクリアするか、 disabled を true に設定するまでスケジュールに従います。 スケジュールされたインデクサーが予期せずトリガーを停止した場合は、復旧手順の スケジュール動作に関する FAQ を 参照してください。 処理するものがない場合にインデクサーをスケジュールに残しても、システムのパフォーマンスには影響しません。 変更されたコンテンツのチェックは、比較的高速な操作です。

前提条件

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

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

スケジュール定義

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

プロパティ 説明
"interval" (必須) 連続する 2 つのインデクサー実行の開始の時間間隔。 許容される最小間隔は 5 分で、最長は 1,440 分 (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 ポータル、REST API、またはAzure SDKを使用します。

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

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

スケジュールの動作に関する FAQ

複数のインデクサー ジョブを並列に実行できますか?

複数のインデクサーを同時に実行できますが、各インデクサーは 1 つのインスタンスです。 同じインデクサーの 2 つのコピーを同時に実行することはできません。

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

スキルベースのインデックス作成の場合、インデクサーは特定の実行環境で実行されます。 このため、サービス ユニットの数は、実行できるスキルベースのインデクサー ジョブの数には影響しません。 複数のスキルベースのインデクサーを並列に実行できますが、実行環境内のコンテンツ プロセッサの可用性に依存します。

スケジュールされたジョブは、指定した時刻に常に開始されますか?

インデクサー プロセスはキューに登録でき、処理ワークロードやその他の要因によっては、ポストされた時点で正確に開始されない場合があります。 たとえば、次にスケジュールされた実行が開始されるように設定されているときにインデクサーがまだ実行されている場合、保留中の実行は、次にスケジュールされた予定が発生するまで延期され、現在のジョブを終了できます。

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

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

  2. 2 番目の実行は、2024 年 1 月 1 日午前 9 時 (UTC) 前後に開始します。 この実行には 70 分 (1 時間以上) かかり、UTC の午前 10 時 10 分まで完了しないとします。

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

メンテナンス中や一時的な状態からの復旧時など、まれに、システムは複数のインデクサー実行をキューに入れます。 この状態が発生すると、インデクサーはスケジュールされたウィンドウ内で保留中のワークロードを順番に実行します。 たとえば、インデクサーが 1 時間ごとに実行されるようにスケジュールされていて、複数の実行がオンデマンドで遅延またはトリガーされた場合、キューに格納されたジョブは、キューがドレインされるまでバック ツー バックで実行されます。 これらの実行は追加の実行ではなく、以前にスケジュールされた実行または要求された実行を表します。 この動作はほとんどのシナリオでは一般的ではありませんが、インデクサーは最終的にすべてのキューに登録されたタスクを処理して、一貫性とデータの鮮度を維持するように設計されています。

注

時間の影響を受けやすい厳密なインデクサー実行要件がある場合は、インデックス作成パイプラインを直接制御できるように 、プッシュ API モデル の使用を検討してください。

同じドキュメントでインデックス作成が繰り返し失敗した場合はどうなりますか?

インデクサーに特定のスケジュールを設定していても、実行のたびに同じドキュメントで失敗し続ける場合、インデクサーは再び正常に処理を進められるようになるまで、実行間隔が徐々に長くなり、最長で少なくとも 2 時間ごと、または実装要因によっては 24 時間ごとに実行されるようになります。 基になる問題を修正したと思われる場合は、 インデクサーを手動で実行します。 インデックス作成が成功した場合、インデクサーは通常のスケジュールに戻ります。 手動実行が成功した後にインデクサーが通常のスケジュールに戻らない場合は、次の質問を参照してください。

スケジュールされたインデクサーが起動されなくなりました。 スケジュールをリセットするにはどうすればよいですか?

スケジュールされたインデクサーの実行が停止した場合は、無効にしてから再度有効にしてスケジュールをリセットします。 この回復が必要であるという兆候: スケジュールが構成され、データ ソースが変更された場合でも、実行履歴に新しい実行は表示されません。

disabledを true に設定すると、スケジュールが中断されます。 falseに戻す (またはプロパティを省略する) と、現在の時刻を構成された間隔の新しいベースラインとして使用して、スケジュールが再開されます。

  1. Azure portal で、Search サービスに移動します。
  2. インデクサーを選択します。
  3. インデクサーを選択して開きます。
  4. [設定]を選択します。
  5. インデクサーを 無効に設定します。
  6. 保存を選びます。
  7. インデクサーを [有効] に戻します。
  8. 保存を選びます。
  9. [ 実行履歴 ] タブを選択し、次のスケジュールされた間隔内に新しい実行が表示されることを確認します。

注

インデクサーを再度有効にすると、元の startTimeではなく、現在の時刻を基準にしてスケジュールがリセットされます。 たとえば、間隔が 2 時間で、午後 3 時 15 分に再度有効にする場合、次にスケジュールされた実行は約 5:15 PM です。

次のステップ

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