INFOSYS
INFOSYS

Reputation: 1585

Access Elastic Search Using Its Java Api's

I am trying to follow the Documentation of Elastic Search to get and post data from it using its java Api's. But i am constantly getting error.

This is the code i have tried as of now.

Settings settings = Settings.builder().put("twitter", "tweet").build();
TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

GetResponse response = client.prepareGet("twitter", "tweet", "1").get();

The stack trace

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableSortedMap at com.c1x.entity.Test.main(Test.java:20) Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableSortedMap at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more

Please Help , i am new to Elastic search , the data is present in elastic search as i can see it when i use dev tools in kibana

after adding google commons

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/util/SetOnce
    at org.elasticsearch.common.settings.Settings$Builder.<init>(Settings.java:676)
    at org.elasticsearch.common.settings.Settings$Builder.<clinit>(Settings.java:671)
    at org.elasticsearch.common.settings.Settings.<clinit>(Settings.java:84)
    at com.c1x.entity.Test.main(Test.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.util.SetOnce
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 4 more

After adding lucene jar

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;
    at org.elasticsearch.common.Strings.<clinit>(Strings.java:459)
    at org.elasticsearch.common.settings.Settings.<init>(Settings.java:90)
    at org.elasticsearch.common.settings.Settings$Builder.build(Settings.java:1215)
    at com.c1x.entity.Test.main(Test.java:21)

Another error

Exception in thread "main" java.lang.VerifyError: class org.elasticsearch.transport.Netty3Plugin overrides final method onModule.(Lorg/elasticsearch/common/network/NetworkModule;)V
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<clinit>(PreBuiltTransportClient.java:84)
    at com.c1x.entity.Test.main(Test.java:22)

Upvotes: 0

Views: 868

Answers (1)

Jens
Jens

Reputation: 69480

You miss the google-collections.jar in your classpath. Add it and the error will go away.

If you are using maven as dependency Management tool, add the follwing lines to your pom.xml:

<dependency>
    <groupId>com.google.collections</groupId>
    <artifactId>google-collections</artifactId>
    <version>1.0</version>
</dependency>

Next jar is missing add lucene-core-<version>.jar

maven dependency is:

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>6.5.1</version>
</dependency>

Upvotes: 1

Related Questions