solrj:Solr Cloud における非同期リクエストとバッチ更新

トピック作成者:ks-solruserml-bot (2025/07/17 11:16 投稿)
2
(The bot translated the original post https://lists.apache.org/thread/4n7z4vkslrjj3wsb5t5fvghvyvvwy71k into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちは、皆さん。
現在、Apache StormCrawler(インキュベーション中)
(https://github.com/apache/incubator-stormcrawler/pull/1488)の機能を開発しており、以下のことを実現したいと考えています:
- Solr Cloud クラスターと通信するために
CloudHttp2SolrClient
を使用する Http2SolrClient#requestAsync
でできるように、非同期のクエリリクエストを送信するConcurrentUpdateSolrClient
のように、バッチでの更新を送信する
私が調べた限りでは、(2) と (3) は標準機能としてはサポートされていないため、代替策として以下のような方法を試してみました:
非同期クエリリクエストについて:
CloudHttp2SolrClient
がラップしているLBHttp2SolrClient
を取得する- クラスター状態からアクティブな Solr エンドポイントを取得する
- エンドポイントをシャッフルして簡易的なロードバランシングを行う
LBHttp2SolrClient#requestAsync
の仕様によれば:
複数ホストに対して非同期リクエストを実行するが、指定されたエンドポイントリストの最初のエンドポイントから順に試し、成功するまで繰り返す。このメソッド自体はロードバランスを行わないため、ロードバランスが必要な場合は呼び出し側でリストをシャッフルする必要がある
- その上で
LBHttp2SolrClient#requestAsync
を実行する
上記の実装例はこちらにあります:
SolrConnection.java(L66〜L96)
一方、バッチ更新については、唯一考えついた代替策は手動でバッチ処理を実装することですが、これは複雑ですし、CloudSolrClient
の設計思想にも反しているように感じられます。
将来的に、CloudHttp2SolrClient
に非同期リクエストやバッチ更新機能を追加する予定はあるのでしょうか?
上記の代替策について、ご意見・ご提案があればぜひ教えてください。
どうぞよろしくお願いいたします。
Markos Volikas
トピックへ返信するには、ログインが必要です。