問題タブ [solrcloud]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Solrcloud のパフォーマンスの問題
従来のマスター/スレーブ モデルから SolrCloud に移行中です。私は Solr 4.4 を使用しており、それぞれ 1 つのレプリカを持つ 2 つのシャードをセットアップしています。私は 3 飼育係のアンサンブルを持っています。すべてのノードは AWS EC2 インスタンスで実行されています。シャードは m1.xlarge 上にあり、zookeeper インスタンスを共有しています (別のボリュームにマウントされています)。各 solr インスタンスには 6 GB のメモリが割り当てられます。
インデックスには約 1,000 万のドキュメントがあります。以前のスタンドアロン モデルでは、クエリの平均は約 100 ミリ秒でした。これまでのところ、SolrCloud クエリの応答はひどいものでした。クエリの応答時間は 1000 ミリ秒を超え、2000 ミリ秒に達することもよくあります。サーバーの追加やネットワークの遅延などによる急増を予想していましたが、この違いには本当に困惑しています。ハードウェアはどちらの場合も似ていますが、SolrCloud ノードのカップルが Zookeeper も共有しているという事実を除きます。m1x.large I/O は高いため、ボトルネックにもなりません。
古いセットアップとのもう 1 つの違いは、負荷分散のために 3 つの Zookeeper 参照を持つ新しい CloudSolrServer クラスを使用していることです。しかし、Solr 管理クエリ パネルから実行されたクエリが遅いことを確認しているため、大きな影響はないと思います。
ここに私の構成セットアップのいくつかがあります:
コミット頻度
ブール節 :
クエリ リスナー:
リクエスト ハンドラ:
私が気づいたことの 1 つは、queryresultcache のヒット率が非常に低く、クエリが常に一意であるかどうかわからないことです。私は edismax を使用していますが、 recip(ms(NOW,PublishDate),3.16e-11,1,1)^2.0 があります。これは貢献できますか?
長い投稿で申し訳ありませんが、ここで問題を特定するのに苦労しています。特に、同様のハードウェアとネットワークを備えたマスター/スレーブ環境でクエリが正常に実行されている場合はなおさらです。
どんな指針も高く評価されます。
- ありがとう
solr - solrj を使用して特定のシャードのデータにインデックスを付ける方法
solrj をクライアントとして使用して、ドキュメントを solr クラウドにインデックス付けしています (solr4.5 を使用)
tenant_id に基づいてドキュメントを保存する必要があったため、ドキュメント ルーティングを実行しようとしています。コレクションがnumShardsパラメーターを使用して作成されている場合にのみ可能です( http://searchhub.org/2013/06/13/solr-cloud-document-routing/ )
solr クラウド (example1/solr と example2/solr) に solr の 2 つのインスタンスと、2181 ポートで実行されている exrenal Zookeeper があります。
両方のインスタンスは、collection1 というコレクションで構成されています
newCollectionというコレクションをもう 1 つ作成しました(2 つのシャードと 2 つのレプリカを使用)。
http://localhost:8501/solr/admin/collectionsaction=CREATE&name=newCollection&numShards=2&replicationFactor=2&maxShardsPerNode=2&router.field=id
example1/solr-> には、newCollection_shard1_replica1 と newCollection_shard2_replica1 があります。
example2/solr -> newCollection_shard1_replica2 と newCollection_shard2_replica2 があります
example1/solr/collection1/conf をすべてのシャードとレプリカにコピーしました
Zookeeper サーバーと solr インスタンスを再起動しました。
Zookeeper->zkServer.cmd
example1/solr-> java -Dbootstrap_confdir=./solr/newCollection_shard1_replica1/conf -Dcollection.configName=myconf -DzkHost=localhost:2181 -jar start.jar
example2/solr->java -DzkHost=localhost:2181 -jar start.jar
(両方のインスタンスが異なるポートで実行されています。1 つは 8081 で、もう 1 つは 8051 です)
solrj クライアントを使用してドキュメントのインデックスを作成しています
ここに私のサンプルコードがあります
しかし、ID shard1!513 でcollection1にドキュメントを保存しています。solrconfig.xml で必要な構成変更はありますか (solr4.5 に付属するデフォルトの solrconfig.xml を使用しています)。
ドキュメントをnewCollectionに保存するにはどうすればよいですか? ドキュメント ルーティングの方法
問題を解決してください。
ありがとう!
solr - Solr シングル インデックス vs Solr マルチコア
単一の Solr インスタンスに単一のインデックスを作成するか、単一の Solr インスタンスに複数のコアを作成し、各コアがインデックスにサービスを提供するかを決定する際に、支援が必要です。私の理解では、solr の単一のインデックスは通常、1 つのタイプのドキュメントにインデックスを付けるために実装されます。ドキュメントの種類が異なる場合のベスト プラクティスは何ですか? たとえば、請求書トランザクションの詳細をインデックス化する場合、次のように請求書トランザクション ドキュメントのフィールドを含むスキーマを作成できます。
- 請求書の日付
- 期日
- 請求書概要
- 請求連絡先
- 請求書明細
- ノート
製品の詳細のインデックスも作成したいとします。次のようなスキーマを使用して新しいドキュメント タイプを作成します。
- 製品コード
- 製品説明
- 販売価格
- 購入価格
- 手元に
- 平均費用
- ノート
Solr で新しいコアを作成して、製品ドキュメントのインデックスを作成しますか? または、次のようにトランザクションと製品の両方を 1 つのスキーマにマージしますか?
- 請求書の日付
- 期日
- 請求書概要
- 請求連絡先
- 請求書明細
- 製品コード
- 製品説明
- 販売価格
- 購入価格
- 手元に
- 平均費用
- ノート
「請求書」コアと「製品」コアが2つの異なるドキュメントにインデックスを付ける代わりに、上記のドキュメントにインデックスを付けるコアが1つだけありますか?
フィールドが類似している場合、 Solr wikiで提案されているように単一のフラット インデックスを持つことは理にかなっていると思いますが、上記のような例では、データは別々のエンティティであるため、互いにリモートで関連付けさえされていません。テーブル名フィールドなど、さまざまなエンティティを区別するために追加のフィールドを追加し、テーブル名フィールドに基づいてクエリをフィルター処理することを提案するケースを見てきましたが、これはうまくいくと思います。次のようなユースケースがある場合、それがどこまでスケーラブルかはわかりません。
"キーワード「John」で請求書を検索します。検索するフィールドは「billingContact」、「invoiceSummary」、「notes」です。クエリ時に「billingContact」フィールドをブーストします。また、「John」で製品を検索します。検索するフィールドは「 productDescription', 'supplier', 'notes'. クエリ時に 'supplier' をブーストします. 100 の請求書と 100 の製品のみを返します."
私が取り組んでいるアプリケーションでは、単一のフォームから請求書と製品を検索する必要があります。アプリケーションには、さまざまなものを検索するさまざまな部分はありません。
すべてを 1 つのインデックスにまとめることに対する私の懸念。
1) インデックスのサイズが大きい 例: 5,000 万件の請求書 + 5,000 万件の製品 (単一インデックス)
2) そのサイズのインデックスの再インデックス。
3) インデックスの調整: 単一のインデックスでそれを行うよりも、特定の予想される検索結果を提供するために、個々のインデックスを微調整/調整する方が簡単ではないでしょうか?
4) 今後、請求連絡先の詳細もインデックス化することを決定します。これにより、インデックスを作成するフィールドがさらに追加され、ポイント 1) および 2) の私の懸念に貢献します。
java - Solr コンポーネント コード内から Zookeeper の URL と Solr コレクション名を取得する
CloudSolrServerインスタンスを使用して分散インデックスで補助クエリを実行するカスタム Solr コンポーネントを作成しています。solrconfig.xml
通常の方法で設定から Zookeeper の URL とコレクション名を取得しています。
Zookeeper の URL エントリとコレクション名のエントリをファイルから消去したいと考えていsolrconfig.xml
ます。これらの値を別の場所から取得することは可能ですか? コンポーネントが実行されているのと同じコレクションで補助クエリを実行しています。コレクション名とその Zookeeper URL をコンポーネント コード内から取得するにはどうすればよいですか?
solr - Solrcloud とスキーマが異なる複数のコア
最近、Windows/Tomcat/Solr 実装 (Solr バージョン 4.4) で Zookeeper を有効にし、 オプション-DzkRun
と-Dbootsrap_confdir
オプションを使用して正常に動作するようにしました。
これにより Zookeeper も起動され、confdir パラメータから構成をロードするように指示されることを理解してください。ただし、構成を 1 つのコアにしか指定できないため、両方のコアが同じスキーマを使用しています。
shareschema
ファイルでオプションを見つけてsolr.xml
それを false に設定しましたが、単一のスキーマはまだ両方のコアにしかロードされていないようです。
また、Solr の次のバージョンのリリース ノートを確認しましたが、これに対処するものは何もありませんでした。
Tomcat の複数のインスタンスはおそらくこれを回避する方法ですが、zookeeper オプションで複数のスキーマを使用できるようにする方法があるはずです。