Solrインデックスの切り替え

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

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

Solrは、インデックスを別のコアで再構築するように設定して、再構築が現在使用されている検索インデックスに影響を与えないようにすることができます。インデックスの再構築と最適化が完了すると、Sitecoreは2つのコアを切り替え、再構築および最適化されたインデックスが使用されます。

SwitchOnRebuildSolrSearchIndexクラスはSolrSearchIndexクラスを継承し、特定のインデックスに対して2つのコアを維持する機能を追加します。これは本番環境でのみ重要であるため、テスト中および本番環境に移行する前に、SwitchOnRebuildSolrSearchIndex実装を使用してカスタムインデックスを再構成できます。

インデックスが完全に再構築されると、SitecoreはSolrにSWAPリクエストを送信してプライマリ コアとセカンダリ コアを切り替えます。

重複するSolrインデックスを作成し、別のコアでインデックスを再構築するようにSolrを設定するには、次のようにします。

  1. Solrサーバーから、既存のitembucketsフォルダーをコピーします。コピーをitembuckets_secと呼びます。

  2. itembuckets_sec/core.propertiesファイルをアップデートし、新しいコアの名前を設定します。

    name=itembuckets_sec

  3. Solrを再起動します。

  4. 2つのコアを確認します。これを行うには、次のURLにアクセスします(実際の設定に応じて変更します)。

    http://localhost:8983/solr/itembuckets/select/?q=*:*&version=2.2&start=0&rows=10&indent=on

    http://localhost:8983/solr/itembuckets_sec/select/?q=*:*&version=2.2&start=0&rows=10&indent=on

    どちらも0の結果を返すはずです (ただし、XMLがいくつか表示されます)。

  5. この実装を使用するには、特定の検索インデックスのタイプ参照をSitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrSearchIndexに変更し、rebuildcoreパラメーターを追加します。

    <indexes hint="list:AddIndex">
       <index id="content_index"
              type="Sitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrSearchIndex, 
                    Sitecore.ContentSearch.SolrProvider">
           <param desc="name">$(id)</param>
            <param desc="core">itembuckets</param>
      <param desc="rebuildcore">itembuckets_sec</param>
    ...
メモ

設定ファイルを変更すると、Webサイトはプライマリ コアのインデックスを使用します。完全なインデックスの再構築を開始するたびに、Sitecoreはセカンダリ コアでこれを行います。その後、リビルド後、セカンダリ コアがプライマリ コアになります。

インデックスごとに個別のコア

複数のインデックスが同じコアを共有するように構成すると、完全なインデックスの再構築を実行するたびに、セカンダリ コアが すべての インデックスのプライマリになります。

たとえば、次のような構成があるとします。

<index id="sitecore_web_index" type="Sitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
    <param desc="name">$(id)</param>
    <param desc="core">itembucket</param>
    <param desc="rebuildcore">itembucket_web_rebuild</param>
...
<index id="sitecore_master_index" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
    <param desc="name">$(id)</param>
    <param desc="core">itembucket</param>
    <param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />
...

Sitecoreがインデックスの再構築を完了すると、sitecore_master_indexインデックスのSwitchOnRebuild動作を指定していない場合でも、両方のインデックスでitembucket_web_rebuildコアが使用されます。

このため、運用環境ではインデックスごとに個別のコアを構成する必要があります。これを行うには、次のような構成を使用します。

<index id="sitecore_web_index" type="Sitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
    <param desc="name">$(id)</param>
    <param desc="core">$(id)</param>
    <param desc="rebuildcore">$(id)_rebuild</param>
...
<index id="sitecore_master_index" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
    <param desc="name">$(id)</param>
    <param desc="core">$(id)</param>
    <param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />
...

これにより、SwitchOnRebuildやキャッシュのクリアに関連する不明瞭な動作を回避できます。

SolrCloudインデックスの切り替え

手記

このセクションで説明する機能は、Sitecore 9、Update 2以降で使用できます。

SwitchOnRebuildSolrCloudSearchIndexクラスを使用して、SolrCloudでSolrインデックスを再構築および切り替えます。この実装では、コレクション名の代わりにSolrエイリアスを使用します。

SolrCloudを使用する場合、2つのインデックスを保守および切り替えるメカニズムは異なります。SwitchOnRebuildSolrCloudSearchIndexクラスの実装では、コレクション・エイリアスを使用します。検索操作と更新操作にはアクティブ・エイリアスを、再構築操作には再構築エイリアスを使用します。再構築操作が完了すると、CREATEALIASコマンドはエイリアスが参照するコレクションを交換します。

構成はSolrで説明したものと似ていますが、次の点が異なります。

<index id="sitecore_web_index" type="Sitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrCloudSearchIndex, Sitecore.ContentSearch.SolrProvider">
  <param desc="mainalias">$(id)MainAlias</param>
  <param desc="rebuildalias">$(id)RebuildAlias</param>
  <param desc="collection">$(id)</param>
  <param desc="rebuildcollection">$(id)_rebuild</param>
...
</index>

どこ

  • mainalias rebuildalias: Sitecoreインデックスで使用されるアクティブ エイリアスと再構築エイリアスの名前。

  • collection rebuildcollection: Sitecoreインデックスの保存に使用されるSolrコレクションの名前。

ContentSearch.Solr.EnforceAliasCreation設定がtrueの場合、Sitecoreインスタンスはエイリアスを作成し、まだ存在しない場合はコレクションにマッピングします。エイリアスを手動で作成することもできます。

SolrCloudを使用するようにSitecoreを設定するときは、次のガイドラインに従ってください。

  • SwitchOnRebuildSolrCloudSearchIndexインデックス・タイプは、アクティブなインデックス更新ストラテジーと組み合わせたもののみを使用してください (インデックスには、手動以外のインデックス更新ストラテジーが少なくとも1つあります)。

  • 特定の検索インデックスに対してSwitchOnRebuildSolrCloudSearchIndexインデックス タイプを使用できるSitecoreインスタンスは1つだけです。他のすべてのSitecoreインスタンスでは、SolrSearchIndexタイプを使用し、coreパラメーターとしてmain aliasを使用する必要があります。

    <index id="sitecore_web_index" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
      <param desc="core">$(id)MainAlias</param>
  • インデックス作成を担当するSitecoreインスタンスでは、InstanceName設定を使用してインスタンス名を設定する必要があります。

    例えば:

    <setting name="InstanceName" value="YOUR_UNIQUE_INSTANCE_NAME" />

    これにより、新しいデプロイ中にマシン名 (Environment.MachineName) またはサイト名 (HostingEnvironment.SiteName) が変更された場合に、アクティブなSolrコレクションに関する情報が失われるのを防ぐことができます。

    他のすべてのインスタンスは、メイン エイリアスによって検索インデックスを参照しますが、これは変更されません。

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