2015-05-21 84 views
1

我創建了一個包含2個節點的ES集羣。其中一個節點配置爲主節點,其他節點配置爲客戶機節點。主節點具有完全構建的索引。從連接到ElasticSearch集羣的客戶端節點搜索時獲取SearchPhaseExecutionException

當我運行REST客戶端上的以下
http://localhost:9200/_cluster/health, 我得到下面的響應

{ 
    "cluster_name": "827d89539ac6ae688c1a84b9a7076b33", 
    "status": "green", 
    "timed_out": false, 
    "number_of_nodes": 2, 
    "number_of_data_nodes": 1, 
    "active_primary_shards": 4, 
    "active_shards": 4, 
    "relocating_shards": 0, 
    "initializing_shards": 0, 
    "unassigned_shards": 0 
} 

這表明客戶端節點已加入羣集。

我可以從主節點搜索和索引。但是當試圖從客戶端節點搜索時,我得到了下面的異常。

Caused by: org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [query_fetch], all shards failed; shardFailures {[FI4lBsqZSne3MzDY5QLDvw][rule][0]: RemoteTransportException[Failed to deserialize response of type [org.elasticsearch.search.fetch.QueryFetchSearchResult]]; nested: TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.search.fetch.QueryFetchSearchResult]]; nested: IOException[Expected handle header, got [90]]; } 
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:272) 
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$3.onFailure(TransportSearchTypeAction.java:224) 
at org.elasticsearch.search.action.SearchServiceTransportAction$7.handleException(SearchServiceTransportAction.java:324) 
at org.elasticsearch.transport.netty.MessageChannelHandler.handleException(MessageChannelHandler.java:181) 
at org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:148) 
at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:125) 
at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296) 
at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) 
at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) 
at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) 
at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268) 
at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255) 
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) 
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) 
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

設置我都用來連接到主節點是

ImmutableSettings.Builder settingsBuilder = ImmutableSettings.settingsBuilder() 
      //.classLoader(getClass().getClassLoader()) // set the class loader to PRAppLoader 
      .put("cluster.name", "827d89539ac6ae688c1a84b9a7076b33") 
      .put("node.name", "wkoduyw7hyd") 
      .put("node.master", false) 
      .put("node.data", false) 
      .put("action.auto_create_index", false) // disable automatic index creation 
      .put("script.disable_dynamic", true) // disable dynamic scripts 
      .put("script.auto_reload_enabled" , false) // disable script reloading 
      .put("path.data", "H:\\WorkSpace\\LunaSprintWorks_Trunc\\miniboot-embedded\\local_8084\\Tomcat\\work\\Catalina\\localhost\\prweb\\PegaSearchIndex") 
      ; 
    settingsBuilder.put("discovery.zen.ping.multicast.enabled", true); 
    settingsBuilder.put("threadpool.index.size", 1); 
    settingsBuilder.put("threadpool.search.size", 1); 
    settingsBuilder.put("threadpool.bulk.size", 1); 
    settingsBuilder.put("threadpool.suggest.size", 1); 
    settingsBuilder.put("threadpool.get.size", 1); 
    settingsBuilder.put("threadpool.percolate.size", 1); 
    settingsBuilder.put("transport.netty.worker_count", 2); 
    settingsBuilder.put("http.netty.worker_count", 1); 

我在客戶端節點執行搜索查詢工作正常,其餘客戶端上。

我從queryBuilders構造的查詢是

{ 
 
    "query" : { 
 
    "filtered" : { 
 
     "query" : { 
 
     "query_string" : { 
 
      "query" : "pxRetrieveReportData", 
 
      "default_field" : "_instancename", 
 
      "default_operator" : "and", 
 
      "allow_leading_wildcard" : true, 
 
      "analyze_wildcard" : true 
 
     } 
 
     }, 
 
     "filter" : { 
 
     "fquery" : { 
 
      "query" : { 
 
      "query_string" : { 
 
       "query" : "NOT _isexternal:true", 
 
       "default_field" : "_instancename", 
 
       "default_operator" : "and", 
 
       "allow_leading_wildcard" : true 
 
      } 
 
      }, 
 
      "_cache" : false 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    "fields" : "*" 
 
}

你可以讓我知道在這種情況下,我們會得到這個例外?

我在兩個節點中都使用了相同版本的elasticsearch jar。

+0

什麼版本的ES是你的客戶端和什麼版本你的羣集? –

+0

都有elasticsearch 1.0.2。版本 – Yasaswani

+0

你確定嗎?此異常表示版本不匹配。 –

回答

0

該異常表示可能在客戶端和集羣之間使用混合Elasticsearch版本。

相關問題