Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
RE: Issue in connecting to remote index Elasticsearch in liferay.7.2.CE
Hi Team,
I have a need to connect to remote index in Elasticsearch server, I want to fetech data from the remote index Elasticsearch server.
I have created a portlet and added below osgi dependency to write Rest High Level Client to connect to remote index of ES, I added OSGI dependency of the Elasticsearch inside the build.gradle file:
compile group: 'org.elasticsearch.client', name:
'elasticsearch-rest-high-level-client', version: '6.5.0'
compile group: 'org.elasticsearch', name:
'elasticsearch', version: '6.5.0'
compile group:
'org.elasticsearch.client', name: 'elasticsearch-rest-client',
version: '6.5.0'
compile group: 'org.elasticsearch', name:
'elasticsearch-core', version: '6.5.0'
compile group:
'org.elasticsearch.client', name:
'elasticsearch-rest-client-sniffer', version: '6.5.0'
I used blown code to connect to remote ES index and get data from the ES index.
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost(HOST, 9600, "http")))
SearchRequest searchRequest = new
SearchRequest(INDEX);
org.elasticsearch.index.query.QueryBuilder matchQueryBuilder =
QueryBuilders.matchQuery("companyname",
"Wipro");
SearchSourceBuilder
sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(matchQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest);
System.out.println(" ###### Get the SearchResponse :
########"+ searchResponse);
client.close();
I have implemented same code into the custom portlet, I tried to connection and get data from the remote ES index, I got the exception below during the deployment with Liferay7.2.GA2.CE tomcat server.
2020-12-10 13:46:12.047 INFO
[fileinstall-D:/CRM/setup-vendor-ce/app-server/liferay-ce-portal-7.2.1-ga2/osgi/modules][BundleStartStopLogger:39]
STARTED com.crm.elasticsearch_1.0.0 [3705]
2020-12-10
13:46:12.276 ERROR [Framework Event Dispatcher: Equinox Container:
2413d8bb-bcb4-4953-ae2a-45429debf6ad][Framework:93] FrameworkEvent
ERROR
org.osgi.framework.ServiceException: Exception in
org.apache.felix.scr.impl.manager.SingleComponentManager.getService()
at
org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:222)
at
org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)
at
org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:524)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:464)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624)
at
com.liferay.portal.osgi.web.portlet.tracker.internal.PortletTracker.addingService(PortletTracker.java:120)
at
com.liferay.portal.osgi.web.portlet.tracker.internal.PortletTracker.addingService(PortletTracker.java:111)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
at
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at
org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
at
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)
at
org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892)
at
org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432)
at
org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665)
at
org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339)
at
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381)
at
org.apache.felix.scr.impl.Activator.access$200(Activator.java:49)
at
org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263)
at
org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
at
org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
at
org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49)
at
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488)
at
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:1)
at
org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)
at
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at
org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)
at
org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)
at
org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)
at
org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)
at
org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.start(Module.java:467)
at
org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428)
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1275)
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1248)
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520)
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365)
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316)
Caused
by: java.lang.NoClassDefFoundError:
org/elasticsearch/index/query/QueryBuilder
at
java.lang.Class.getDeclaredConstructors0(Native Method)
at
java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructors(Class.java:1651)
at
org.apache.felix.scr.impl.inject.ComponentConstructor.<init>(ComponentConstructor.java:94)
at
org.apache.felix.scr.impl.inject.ComponentMethodsImpl.initComponentMethods(ComponentMethodsImpl.java:106)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1008)
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1026)
at
org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:936)
at
org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:901)
at
org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210)
... 52 more
Caused by: java.lang.ClassNotFoundException:
org.elasticsearch.index.query.QueryBuilder cannot be found by
com.crm.elasticsearch_1.0.0
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:508)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411)
at
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:151)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
...
64 more
2020-12-10 13:46:12.276 ERROR
[fileinstall-D:/CRM/setup-vendor-ce/app-server/liferay-ce-portal-7.2.1-ga2/osgi/modules][ElasticSearchControllerPortlet:93]
bundle com.crm.elasticsearch:1.0.0
(3705)[com.crm.elasticsearch.portlet.ElasticSearchControllerPortlet(5279)]
: Error during instantiation of the implementation object
java.lang.NullPointerException
I also tried to another version of the Rest Client OSGI dependency with liferay 7.2.GA2.CE.
compile group: 'org.elasticsearch.client', name: 'elasticsearch-rest-high-level-client', version: '6.8.0'
But I got the same expection as above.
Please help me to resolve this issue, Kindly suggest me, I have to add any other dependency and need to be the change the dependency version.
Thanks in advance
I can't help you too much with specifics, but from what I can see you're trying to execute a MatchQuery against query Liferay's company index.
Have you seen these docs?
Powered by Liferay™