Elasticsearch java API[5.0] using problem


(Girish Pathak) #1

Hi ,
I am very new to elasticsearch , I want to connect with elasticsearch engine using java API[5.0].
Can anyone give the sample code for this.I tried googling but didn't find any full example which can help me regarding this .


(David Pilato) #2

Did you read https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html?


(Girish Pathak) #3

Hi David i read that but didn't get enough information to connect to elasticsearch engine . i am using elasticsearch verion 5.0.2 and java api 5.0 . Please can i have one full sample program with proper imports statements .


(David Pilato) #4

What did not work so far? I mean I can definitely copy and paste the guide here but it does not really make sense IMO.


(Girish Pathak) #5

Hi David I am trying to connect with elastic search engine but not able to connect getting Null Pointer Exception.
Below is my code sample for connecting may i know please where I am doing wrong i am very new to this doing POC for this and have to start implementation.

    public static TransportClient createTransportClient(){
    		TransportClient client=null;
    		try {
    			client=new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getLocalHost(), 9200));
    		}catch (Exception e){

    		}finally {
    			client.close();
    		}
    		return client;

    	}
 Exception in thread "main" java.lang.NullPointerException

(David Pilato) #6

Please format your code using </> icon as explained in this guide. It will make your post more readable.

What is the stack trace?


(Girish Pathak) #7

David waiting for your reply how can i initialize the TransportClinet as i mentioned in above post i am getting Null Pointer Exception and even i referred below links also but in these links they have given examples using old API version.
http://www.programcreek.com/java-api-examples/index.php?class=org.elasticsearch.client.transport.TransportClient&method=addTransportAddress


(David Pilato) #8

Ok. Let me copy and paste the documentation:

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

(Girish Pathak) #9

David thanks for immediate reply i tried that but unluckily didn't work for me .


(David Pilato) #10

I can't help sorry. I don't have details I asked you for.
Like a stack trace, an error message.


(Girish Pathak) #11

David i have attached the code base in above post which i was writing for to create TransportClient .I am calling createTransportClient()method from main()and the stack trace is as below:

Exception in thread "main" java.lang.NullPointerException
	at com.SampleApplication.createTransportClient(SampleApplication.java:31)
	at com.SampleApplication.main(SampleApplication.java:18)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

(David Pilato) #12

What do you have exactly at line 31 of SampleApplication.java?


(Girish Pathak) #13

client.close(); at line no 31 inside finally block David


(David Pilato) #14

so the client is null and has not been initialized.
Probably because you are swallowing the Exception.

May be write something:

try {
  client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
 } catch (Exception e) {
  // Print your exception here. Important things are in it.
 } finally {
  if (client != null) {
    client.close();
  }
}

(Girish Pathak) #15

Thanks David now I am getting below exception when i print it in catch block.

Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ActionPlugin
	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:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.elasticsearch.transport.client.PreBuiltTransportClient.<clinit>(PreBuiltTransportClient.java:54)
	at com.tpgsi.cdr.SampleApplication.createTransportClient(SampleApplication.java:27)
	at com.tpgsi.cdr.SampleApplication.main(SampleApplication.java:18)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.plugins.ActionPlugin
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 20 more

(Girish Pathak) #16

David my gradle dependency is as below:

dependencies {
	compile('org.springframework.boot:spring-boot-starter-data-elasticsearch')
	compile('org.springframework.boot:spring-boot-starter-data-mongodb')
	compile('org.springframework.boot:spring-boot-starter-web')
}

(David Pilato) #17

So you did not import the following dependency?

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>5.0.1</version>
</dependency>

BTW you are using spring-boot. Is it compatible with elasticsearch 5.0?


(Girish Pathak) #18

Hi David you are right spring-boot is not compatible with 5.0 .
Thanks a lot for helping now I am able to create TransportClient after adding org.elasticsearch.client dependency .


(system) #19

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.