1

Jettyを搭載したサーバーでマルチコアSolrインスタンスを実行しており、バックエンドの保護に取り組んでいます。httpsプロトコルを使用するようにJettyを構成しましたが、次のようなシャードを使用せずに/ selectをsolrに送信すると、すべてが正常に機能します。

https://localhost:7450/solr/core0/select?indent=true&rows=10&start=0&q=*:*

検索結果が返され、すべて問題ありません。

しかし、すべてのシャードを検索したい場合:

https://localhost:7450/solr/core0/select?indent=true&rows=10&start=0&q=*:*&shards=localhost:7450/solr/core0,localhost:7450/solr/core1,...

以下の例外が発生します。どういうわけかsolr自体を構成して、httpsプロトコルを介して他のシャードにリクエストを送受信する必要があると思いますが、Googleを何時間も検索した後は運が悪かったです。

org.apache.solr.common.SolrException
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:275)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
    at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:713)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: org.apache.solr.client.solrj.SolrServerException: org.apache.commons.httpclient.ProtocolException: The server localhost failed to respond with a valid HTTP response
    at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:472)
    at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249)
    at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:129)
    at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:103)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
    at java.lang.Thread.run(Thread.java:637)
Caused by: org.apache.commons.httpclient.ProtocolException: The server localhost failed to respond with a valid HTTP response
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1987)
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
    at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:419)
    ... 8 more

Solr3.6とJetty6.1-SNAPSHOTを使用しています。

4

2 に答える 2

0

私はまだこのセットアップを自分で取得する作業を行っていますが、Solr 4.7 でサポートが追加されたようです。元のバグを参照してください: https://issues.apache.org/jira/browse/SOLR-3854

于 2014-04-15T18:26:10.300 に答える
0

core0 の solrconfig.xml で、シャード呼び出しに使用される URL スキームを設定できるはずです。

<requestHandler name="standard" class="solr.SearchHandler" default="true">
  <!-- other params go here -->
  <shardHandlerFactory class="HttpShardHandlerFactory">
    <str name="urlScheme">https://</str>
  </shardHandlerFactory>
</requestHandler>

ソースを見ると、これは Solr 3.6.0 以降で機能するようです。ただし、まだ Solr 3.4.0 を使用しているため、自分で試したことはありません。

参照: http://wiki.apache.org/solr/SolrConfigXml#Configuration_of_Shard_Handlers_for_Distributed_searches

于 2013-01-30T15:12:31.070 に答える