2016-11-07 42 views
2

下面的代碼我嘗試連接和索引到彈性搜索:錯誤而Java客戶端試圖連接到彈性搜索

package elasticSearchTest; 

import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; 
import java.net.InetAddress; 
import org.elasticsearch.action.index.IndexResponse; 
import org.elasticsearch.client.Client; 
import org.elasticsearch.client.transport.TransportClient; 
import org.elasticsearch.common.transport.InetSocketTransportAddress; 
import org.testng.annotations.Test; 

public class ES_Test_Class { 
    @Test 
    public void f() { 
    try{ 
     Client client = TransportClient.builder().build() 
       .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 


     IndexResponse response = client.prepareIndex("twitter", "tweet", "1") 
       .setSource(jsonBuilder() 
          .startObject() 
           .field("user", "kimchy") 
           .field("postDate", "18/May/2011:01:48:10") 
           .field("message", "trying out Elasticsearch") 
          .endObject() 
         ) 
       .get(); 
    // Document ID (generated or not) 
     String _id = response.getId(); 
    // Version (if it's the first time you index this document, you will get: 1) 
    long _version = response.getVersion(); 

    System.out.println("Document id is: "+_id); 

    System.out.println("Document version is: "+_version); 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 
     } 

    } 
} 

下面的依賴關係:

  • 列表項

enter image description here

但是我一直在下面錯誤:

com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: org/jboss/netty/channel/socket/nio/WorkerPool at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) at com.google.common.cache.LocalCache.get(LocalCache.java:3937) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) at org.elasticsearch.common.inject.internal.FailableCache.get(FailableCache.java:51) at org.elasticsearch.common.inject.ConstructorInjectorStore.get(ConstructorInjectorStore.java:51) at org.elasticsearch.common.inject.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:50) at org.elasticsearch.common.inject.InjectorImpl.initializeBinding(InjectorImpl.java:405) at org.elasticsearch.common.inject.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:680)

我已經改變JAR文件和不同版本的JARS降低和少數人的意見更改爲更高版本的順序嘗試所提到here但問題沒有解決

錯誤後更新「網狀」向「網狀-4.0.0.Alpha8」和番石榴爲「番石榴20.0-HAL」:

com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: org/jboss/netty/channel/ReceiveBufferSizePredictorFactory at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) at com.google.common.cache.LocalCache.get(LocalCache.java:4054) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4058) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4985) at org.elasticsearch.common.inject.internal.FailableCache.get(FailableCache.java:51) at org.elasticsearch.common.inject.ConstructorInjectorStore.get(ConstructorInjectorStore.java:51)

回答

2

WorkerPool類與網狀因爲3.5我猜正在添加的版本。所以你需要更新你的netty版本至少3.5+。

+0

升級JAR文件後更新了錯誤 – Vinod

+0

將您的netty更新爲低於4+的東西。 3.9版後,錯誤類不存在。 – alpert

+0

當然,會試用3.8版本 – Vinod