Azure SearchでのxDBインデックスの再構築

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

xDBインデックスを再構築するのは、次の場合です。

メモ

インデックスの再構築を開始する前に、Sitecoreインスタンスがホストされている場所によって設定オプションが異なるため、Azure SearchxConnect Search Indexerの規則をよく理解しておいてください。

Azure SearchとxConnect Searchインデクサーの規則

Azure Searchでは、coreはインデックスであり、Azure Searchはプライマリとセカンダリの2つのインデックスを使用します。常に、1つのインデックスはアクティブでライブ データの検索とインデックス作成に使用され、もう1つのインデックスはパッシブで再構築などのメンテナンス操作に使用されます。

プライマリインデックスとセカンダリインデックスの名前は、次のようにリンクされています。

  • xDBプライマリ インデックスのデフォルト名はxdbです。

  • xDBセカンダリ インデックスのデフォルト名は <PRIMARY INDEX>-secondaryです ( xdb-secondaryになります)。

デフォルトでは、xConnect Search IndexerはxDB Index collection.search接続文字列を使用してプライマリ インデックスとセカンダリ インデックスの両方に対応しますが、セカンダリ インデックス専用の接続文字列を作成することもできます

起動時と各再構築の開始時に、インデクサーは接続文字列を使用してインデックスの存在を確認します。インデックスが見つからない場合は、インデクサーによって作成されます。

インデクサーは、ホストされている場所に応じて、プロセスの種類、アクセス方法、および作業フォルダーを変更します。

Sitecoreオンプレミスでホスティング

クラウドでホストされるSitecore

Process type

xConnect Collection Searchインスタンス上のWindowsサービス。

xConnect Collection Searchインスタンス上のAzure App Service WebJob。

Access way

PowerShellです。

Kuduデバッグ コンソール

<WORKING> folder

<xConnect instance>\App_Data\jobs\continuous\IndexWorker\

D:\local\Temp\jobs\continuous\IndexWorker\<SUBFOLDER>\

AzureはWebジョブを再デプロイするたびに、インデクサーの作業ファイルを格納するための一意の名前の一時サブフォルダー ( bp003r3f.h2g/など) を作成します。

プライマリ インデックスとセカンダリ インデックスを別の名前やAzure Searchサブスクリプションに再構築する

プライマリ インデックスとセカンダリ インデックスを別の名前やAzure Searchサブスクリプションに再構築するには、次のようにします。

  1. プライマリ インデックスがパッシブであることを確認します。

  2. <xConnect instance>\App_Config\フォルダに移動し、ConnectionStrings.configファイルを開きます。

  3. collection.search接続文字列で、インデックス名やAPIキーを編集します。

    <connectionStrings configBuilders="SitecoreConnectionStringsBuilder">
      <add name="<CONNECTION STRING NAME>" connectionString="serviceUrl=https://<SUBDOMAIN>.search.windows.net/;indexName=<INDEX NAME>;apiKey=<API KEY>" />
    • <CONNECTION STRING NAME> は、接続文字列の名前です。これは編集しないでください。

    • <SUBDOMAIN>search.windows.netのサブドメインです。これは編集しないでください。

    • <INDEX NAME> デフォルトのプライマリインデックス名またはその他の名前を指定できます。あなたはそれをどのように呼びたいかを選ぶことができます。

    • <API KEY> はAzure Searchサブスクリプション キーです。Azure Searchサブスクリプションを変更する場合は、新しいAzure SearchサブスクリプションのAPIキーを使用します。

  4. プライマリ・インデックスを再構築します。

  5. すべてのxConnect Collection Searchインスタンスでこの手順を繰り返します。

  6. Azure Searchサブスクリプションを変更した場合は、上記の手順の繰り返しが完了したら、次の操作を行います。

    • 古いAzure Searchサブスクリプションを参照しているインスタンスがないことを確認します。

    • 古いインデックスを含む古いAzure Searchサブスクリプションを削除します。

1つのインデックスを別の名前やAzure Searchサブスクリプションに再構築する

1つのインデックスを別の名前やAzure Searchサブスクリプションに再構築するには、次のようにします。

  1. 専用のセカンダリインデックス接続文字列がない場合は、作成します

  2. 再構築するインデックスがパッシブであることを確認します。

  3. 再構築するインデックスの接続文字列で、インデックス名やAPIキーを編集します。

    <connectionStrings configBuilders="SitecoreConnectionStringsBuilder">
      <add name="<CONNECTION STRING NAME>" connectionString="serviceUrl=https://<SUBDOMAIN>.search.windows.net/;indexName=<INDEX NAME>;apiKey=<API KEY>"/>
    </connectionStrings>
    • <CONNECTION STRING NAME> は、接続文字列の名前です。これは編集しないでください。

    • <SUBDOMAIN>search.windows.netのサブドメインです。これは編集しないでください。

    • <INDEX NAME> デフォルトのインデックス名またはその他の名前を指定できます。あなたはそれをどのように呼びたいかを選ぶことができます。

    • <API KEY> はAzure Searchサブスクリプション キーです。Azure Searchサブスクリプションを変更する場合は、新しいAzure SearchサブスクリプションのAPIキーを使用します。

  4. インデックスを再構築します。

  5. Azure Searchサブスクリプションを変更し、両方のインデックスを同じAzure Searchサブスクリプションに存在させる場合は、次の操作を行う必要があります。

    • 再構築が完了するまで待ちます。

    • 再構築されたインデックスがアクティブになるまで待ちます。

    • パッシブインデックス接続文字列のAPIキーを変更します。

    これで、パッシブ インデックスが新しいAzure Searchサブスクリプションに再構築されます。

  6. すべてのxConnect Collection Searchインスタンスでこの手順を繰り返します。

  7. Azure Searchサブスクリプションを変更し、古いAzure Searchサブスクリプションにインデックスが存在しない場合は、手順の繰り返しが完了したら、次の操作を行います。

    • 古いAzure Searchサブスクリプションを参照しているインスタンスがないことを確認します。

    • 古いインデックスを含む古いAzure Searchサブスクリプションを削除します。

インデックスの再構築

インデックスを再構築するには:

  1. xConnect Search Collectionインスタンスにアクセスします。

  2. <WORKING>フォルダに移動します。

  3. 再構築を開始します。 .\Sitecore.XConnectSearchIndexer.exe -rr

    大事な

    Sitecoreインスタンスをクラウドでホストしている場合は、<WORKING>\App_Data\Logs\ フォルダーから再構築を開始しないでください。これにより、Azureによってインデクサー Webジョブが再デプロイされ、インデックスの再構築プロセスが中断される可能性があります。

インデクサーは、再構築が開始されたことを示すDoneを返し、再構築プロセスを一時停止して続行 し、リソースを一時的に解放できます。再構築が完了すると、新しく再構築されたインデックスは自動的にアクティブになり、他のインデックスはパッシブになります。

大事な

インデックスを再構築して個人を特定できる情報を削除する場合は、再構築が完了し、アクティブ インデックスとパッシブ インデックスが入れ替わった後に、パッシブ インデックスを削除する必要があります。

インデックスがアクティブかどうかを確認する

インデックスがアクティブかどうかを確認するには:

  1. Azure Searchでインデックスを開きます。

  2. 次の検索を実行します。 $filter=id eq 'indexconfiguration'&$select=id,isactivecore

  3. IsActiveCoreフィールドがtrueの場合、インデックスはアクティブです。

再構築が完了したかどうかを確認します

再構築が完了したかどうかは、次の方法で確認できます。

  • <WORKING>\App_Data\Logs\フォルダに移動し、ログファイルを検索します。Rebuilding process. Stage: Finishedテキストが見つかったら、再構築は完了しています。

    Illustration showing the rebuilding process status in the log file.
  • Azure Searchでインデックスを開き、$filter=id eq 'xdb-rebuild-status'&$select=id,rebuildstateコマンドを使用してxdb-rebuild-statusドキュメントの状態を確認します。

    Index Rebuild State statusドキュメントには、次の値を指定できます。

    • 0 = デフォルト

    • 1 = リビルドリクエスト

    • 2 = 始動

    • 3 = RebuildingExistingData

    • 4 = RebuildingIncomingChanges

    • 5 = 仕上げ

    • 6 = 終了しました

  • インデックス再構築の進行状況を監視します。

セカンダリ インデックス専用の接続文字列を作成する

セカンダリインデックスの専用接続文字列を作成するには:

  1. <xConnect instance>\App_Data\config\global\フォルダに移動します。

  2. xDbSecondaryIndexConnectionString.config fileなどの名前のパッチ ファイルを作成します。

  3. パッチ・ファイルで、次のように入力して、collection.search.secondaryなどというセカンダリ・インデックス接続文字列を作成します。あなたはそれを好きなように呼ぶことを選ぶことができます:

    <?xml version="1.0" encoding="utf-8" ?>
    <Settings>
      <Sitecore>
        <XConnect>
          <CollectionSearch>
            <Services>
              <IAzureSecondaryWebClientFactory>
                <Options>
                  <ConnectionStringName>
                    collection.search.secondary
                  </ConnectionStringName>
                </Options>
              </IAzureSecondaryWebClientFactory>
            </Services>
          </CollectionSearch>
        </XConnect>
      </Sitecore>
    </Settings>
  4. <xConnect instance>\App_Config\フォルダに移動し、ConnectionStrings.configファイルを開きます。

  5. 設定ファイルで、接続文字列名、サブドメイン、インデックス名、APIキーを含むセカンダリ接続文字列を追加します。

    <connectionStrings configBuilders="SitecoreConnectionStringsBuilder">
      ...
      <add name="<CONNECTION STRING NAME>" connectionString="serviceUrl=https://<SUBDOMAIN>.search.windows.net/;indexName=<INDEX NAME>;apiKey=<API KEY>"/>
    </connectionStrings>
    • <CONNECTION STRING NAME> は、パッチ ファイルで選択した名前です。

    • <SUBDOMAIN>search.windows.netのサブドメインです。

    • <INDEX NAME> デフォルトのインデックス名またはその他の名前を指定できます。あなたはそれをどのように呼びたいかを選ぶことができます。

    • <API KEY> はAzure Searchサブスクリプション キーです。Azure Searchサブスクリプションを変更する場合は、新しいAzure SearchサブスクリプションのAPIキーを使用します。

  6. パッチ・ファイルを保存します。

9.0初期リリースと9.0 Update 1インデックスの内容を更新する

Sitecore 9.0初期リリースと9.0 Update 1の間、Azure Searchで使用できるインデックス再構築プロセスはありません。ただし、この手順を使用して、インデックスの内容をリフレッシュできます。

  1. インデクサー Webジョブを停止します。

  2. インデックスを削除します。

  3. インデクサーを起動します。

大事な

この手順では、インデックスを再作成し、過去5日間 (SQLのデフォルトの保持期間) 内に変更されたデータを追加します。保存期間の値より古いデータは、インデックスに追加しないでください。このプロセスは、xDB Collectionプロバイダー の変更追跡保持期間 が、インデクサーがすべての既存のデータを処理するまで、すべての受信変更の記録を保持するのに十分な長さであることに依存しています。変更追跡の保持期間を非常に長く設定すると、パフォーマンスに悪影響を及ぼします。

この記事を改善するための提案がある場合は、 お知らせください!