Message Boards

Issue in connecting to differetn Index using elasticsearch

Madhava Venganapalli, modified 4 Years ago.

Issue in connecting to differetn Index using elasticsearch

New Member Posts: 3 Join Date: 12/2/19 Recent Posts
Hi Team,

I have a requirement to connect to different index in elastic search server and get the results and display in my portal.
I have created a portlet and added below entries to write rest client to connect to different index of ES.gradle:
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.client', name: 'elasticsearch-rest-high-level-client', version: '6.5.0'
 compile group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client-sniffer', version: '6.5.0'

bnd:-includeresource: META-INF/lib/elasticsearch-rest-high-level-client.jar=elasticsearch-rest-high-level-client-[0-9]*.jar;lib=true
Import-Package: *;resolution:="optional
if i use standalone program to connect to this index and get the data i am able to fetch and show the results.

        try(RestHighLevelClient esClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")))) {
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.timeout(new TimeValue(600, TimeUnit.SECONDS)); // Request timeout
            sourceBuilder.from(0);
            sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC)); //Result set ordering
            //MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("title", "python");
            BoolQueryBuilder query = new BoolQueryBuilder();
            //query.must(new MatchQueryBuilder("title", "Depth"));
            query.must(QueryBuilders.queryStringQuery("test*")
                    .field("url")
                    .lenient(true)
                    .escape(true)
                    .analyzeWildcard(true)
                    .fuzziness(Fuzziness.ZERO)
                    .defaultOperator(Operator.AND)
                    .boost(1.0f));
            sourceBuilder.query(query);
            SearchRequest searchRequest = new SearchRequest("content");
            searchRequest.source(sourceBuilder);
            System.out.println(searchRequest);
            final SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
            SearchHits hits = searchResponse.getHits();
            System.out.println(hits.totalHits);
            for (SearchHit searchHit : hits) {
                System.out.println(searchHit);
            }
        } catch(IOException e) {
               e.printStackTrace();
        }Same piece of code i am trying to use and deploy in Liferay 7.1 server i am getting below exception at the time of deployment.
2020-03-27 06:49:00.986 ERROR [Refresh Thread: Equinox Container: 6b856545-3231-41e5-b63a-275efac5c2cd][ROOT:93] bundle portal-search:1.0.0 (3982)BundleComponentActivator : Unexpected failure enabling component holder com.portal.search.resource.SearchMVCResource 
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.AbstractComponentManager.activateInternal(AbstractComponentManager.java:756)
    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.framework.util.SecureAction.start(SecureAction.java:468)
    at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:777)
    at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:768)
    at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:538)
    at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:484)
    at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1028)
    at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1409)
    at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.index.query.QueryBuilder cannot be found by portal-search_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)
    ... 42 more
Is it possible to integrate this way? Please kindly help me if i have to deploy any other dependencies or any changes needed.Thank's for any suggestions!
Madhava Venganapalli, modified 4 Years ago.

RE: Issue in connecting to differetn Index using elasticsearch

New Member Posts: 3 Join Date: 12/2/19 Recent Posts
Able to connect now. thanks
Rafiq Uz Zama, modified 3 Years ago.

RE: Issue in connecting to differetn Index using elasticsearch

Junior Member Posts: 30 Join Date: 11/25/11 Recent Posts
Hi Madhava,
What was the fix you did for the above issue?
Can you please elaborate?
Thanks
Rafiq Uz Zama, modified 3 Years ago.

RE: Issue in connecting to differetn Index using elasticsearch

Junior Member Posts: 30 Join Date: 11/25/11 Recent Posts
Ah.. Resolved now..
Fix::
build.gradle -- compile group: "org.elasticsearch", name: "elasticsearch", version: '7.8.0'
bnd file -- ( includeresource is not required)
 Import-Package:\
    !org.*,\
    *
Thanks.