3

私のセットアップはどちらかというと型にはまったものではないかと思うので、少し背景を説明することから始めたいと思います。Solr のセットアップには、次の 3 つの環境が含まれます。

  1. プロダクション - Websolrでホストされている Solr サーバー。
  2. ステージング - Websolrでホストされる Solr サーバーでもあります。
  3. 開発 - sunspot_solr gem を介してサポートされているため、開発用に独自のローカル Solr サーバーを簡単にセットアップできます。

ほとんどの場合、これはうまく機能しています。多くのレコードがあるため、完全な再インデックスを行うには数時間かかります (熱心な読み込みとバックグラウンド ジョブを使用して作業を並列化するにもかかわらず)。しかし、頻繁に完全に再インデックスする必要はないので、それほどひどいことではありません。

しかし、非常に面倒になり始めている別のシナリオがあります... ローカル マシン (またはステージング環境) に運用データを頻繁に入力する必要があります (つまり、基本的には運用から SQL ダンプを取得し、それをローカル データベースにパイプします)。これは、バグ修正などのために常に行っています。

この時点で、データが変更されたため、ローカルの Solr インデックスは古くなっています。そのため、検索を正しく機能させたい場合は、ローカルの Solr サーバーのインデックスを再作成する必要があり、これには非常に長い時間がかかります。

ここで質問です。完全な再インデックスを実行するのではなく、運用インデックスを自分のマシンに単純にコピーしたいと考えています (つまり、概念的には SQL ダンプに似ていますが、データベースではなく Solr サーバー用です)。これが可能であることを知るのに十分なほどグーグルで検索しましたが、Websolr / Sunspot に固有のソリューションは見たことがありません。これらは非常に一般的なツールであるため、他の誰かがすでにこれを理解しているに違いないと思いました。

助けてくれてありがとう!

4

1 に答える 1

3

Solr (および websolr) のよく守られている秘密の 1 つ: Solr レプリケーション APIを使用して、2 つのインデックス間でデータをコピーできます。

本番インデックス「prod54321」のコピーを QA インデックス「qa12345」に作成する場合はfetchindex、QA インデックスのreplicationハンドラでコマンドを使用してレプリケーションを開始します。cURL を使用して概算する簡単なコマンドを次に示します。

curl -X POST https://index.websolr.com/solr/qa12345/replication \
  -d command=fetchindex \
  -d masterUrl=https://index.websolr.com/solr/prod54321/replication

replication(両方の URLの要求ハンドラーへの参照に注意してください。)

于 2014-12-23T01:53:02.523 に答える