スイッチSolrインデックス

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

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

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

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

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

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パラメータを追加します。

    $(id) itembuckets itembuckets\_sec ...

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

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

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

例えば、次のような構成があると仮定します:

$(id) itembucket itembucket\_web\_rebuild ... $(id) itembucket ...

インデックスの再構築が終わSitecoreると、両方のインデックスはitembucket_web_rebuildコアを使用します。たとえsitecore_master_indexインデックスのSwitchOnRebuild動作を指定していなくてもです。

このため、本番環境では各インデックスごとに別々のコアを設定するべきです。以下のような構成を使うことでこれを実現できます:

$(id) $(id) $(id)\_rebuild ... $(id) $(id) ...

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

Switch SolrCloudインデックス

!注このセクションで説明する機能は、Sitecore 9、Update 2以降で利用可能です。

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

SolrCloudを使用する場合、2つのインデックスの維持および切り替えの仕組みは異なります。SwitchOnRebuildSolrCloudSearchIndexクラスの実装ではコレクションエイリアスが使われています。検索や更新操作にはアクティブなエイリアスを、再構築操作にはリビルドエイリアスを使用します。再構築操作が完了すると、CREATEALIASコマンドはエイリアスが参照するコレクションを交換します。

構成はSolrで説明されているものに似ていますが、以下が異なります。

$(id)MainAlias $(id)RebuildAlias $(id) $(id)\_rebuild ...

ここで

  • mainalias rebuildalias
    、Sitecoreインデックスで使用されます。
  • collection およびrebuildcollection

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

SitecoreでSolrCloudを使用する際のガイドラインに従ってください:

  • SwitchOnRebuildSolrCloudSearchIndexインデックスタイプはアクティブインデックス更新戦略と組み合わせて使うだけです(インデックスには手動以外の少なくとも1つのインデックス更新戦略があります)。

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

    $(id)MainAlias
  • インデックスを担当するSitecoreインスタンスでは、InstanceName設定を使ってインスタンス名を設定する必要があります。

    例えば:

    これにより、新しい展開中にマシン名(Environment.MachineName)やサイト名(HostingEnvironment.SiteName)が変更された場合でも、アクティブなSolrコレクションの情報を失うのを防ぎます。

    それ以外のすべてのインスタンスは、メインエイリアスで検索インデックスを参照しており、これは変わりません。

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