2016-05-13 178 views
1

我有一個使用elasticsearch(2.3)與盾的身份驗證問題。 elasticsearch實例託管在某個雲的某個地方,我沒有太多的權限來調整。與java api客戶端的elasticsearch認證

我正在使用Sense chrome插件發出測試請求,並在發送第一個請求之前要求輸入用戶名/密碼(我假設它是某種基本HTTP身份驗證的REST API接口)。 Sense插件的所有查詢都很順利。

現在,我必須使用Java API在客戶端應用程序中對這個實例進行查詢。我創建了TransportClient,都喜歡在下面的代碼片段:

String hostBasedClusterName = StatsConstants.ES_HOST.split("\\.", 2)[0]; 
String clusterName = System.getProperty("cluster", hostBasedClusterName); 

Settings settings = Settings.settingsBuilder() 
         .put("cluster.name", clusterName) 
         .put("shield.transport.ssl", "true") 
         .put("shield.user", String.format("%s:%s", StatsConstants.ES_USERNAME, StatsConstants.ES_PASSWORD)) 
         .build(); 

client = TransportClient.builder() 
         .addPlugin(ShieldPlugin.class) 
         .settings(settings) 
         .build() 
         .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(StatsConstants.ES_HOST), StatsConstants.ES_PORT)); 

基於其他樣本和文檔,這似乎是罰款。然而,當我試圖創建客戶端,我得到一個StreamCorruptedException異常:

2016-05-13 13:53:47,396 WARN netty:788 - NettyTransport.java - [Burstarr] exception caught on transport layer [[id: 0x4ac12d10, ...]], closing connection 
java.io.StreamCorruptedException: invalid internal transport message format, got (48,54,54,50) 
     at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:68) 
     at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425) 
     at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) 
     at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 

客戶端版本2.3.2是使用如在文檔中描述的屏蔽客戶端的lib,編譯是好的,沒有警告,它只是在它嘗試創建該對象時引發異常。

這似乎是微不足道的一些你 - 但對我來說是我用Java/elasticsearch世界第一潛水......

更新 - 我做了一些更多的挖掘/閱讀後,我發現了一個當有人抱怨使用的代理時出現類似的錯誤/異常。我不使用任何代理服務器,它直接連接到服務器;

+0

爲什麼使用ssl('put(「shield.transport.ssl」,「true」)')如果集羣僅使用HTTP基本身份驗證進行配置?刪除put(「shield.transport.ssl」,「true」)'並重試。 –

+0

這是一樣的。 :(有2種方式連接到彈性服務器 - ssl或no ssl。默認情況下,我使用ssl方式。 – dcg

回答

1

問題解決。在這裏添加回應,以減輕一些其他可憐的靈魂的負擔...

來自solr背景,我試圖連接到相同的端口作爲web服務(HTTP/HTTPS)。那是完全錯誤的。我應該連接到端口9343.