2015/12/31 上午10:32:58 | ERROR | SolrCore | org.apache.solr.common.SolrException: no servers hosting shard: |
org.apache.solr.common.SolrException: no servers hosting shard: at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:149) at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:119) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) |
首先須要解決的一個問題是solr啓動使用的端口號是8983,可是 如今運行的solr core所在tomcat容器中設定的solr端口號是80端口,當調用solr的shared查詢時候,仍然會瓶裝request url的時候用8983端口來拼裝,因此在在shared查詢的時候會發生服務不可用的錯誤,因此要在啓動命令的參數中添加一個參數 -Djetty.port=80, 說明一下,雖然是在tomcat容器中這個參數仍然是有效的。
java
接下來再說如何解決上面那個異常,其實很簡單,由於在初始化的時候設置了sharedNumber的數量爲2,剛開始只啓動了一臺服務器,在查詢的時 候,在zookeeper中livenode節點中只有一臺,尚未知足solrcloud最小shared爲2的要求。因此在進行查詢的時候拋出這個異 常很正常,解決辦法是再啓動一個solr節點,啓動命令是java -DzkHost=10.232.15.46:2181,10.232.36.130:2181/baisui -Djetty.port=80 -jar start.jar, 應用啓動的時候自動會到zookeeper中的節點配置信息。第二個solr節點正常啓動後,能夠正常進行查詢操做了。node
須要說明的是一個應用在初始化以後,sharedNumber數目就不能變了,可是 一個share中的副本是能夠添加或者減小的。apache
上面這段處理方式能夠試用一下
tomcat