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やキャッシュのクリアに関連する不明瞭な動作を回避できます。

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