Skip to main content
tadijam47062732
New Participant
October 24, 2019

Elasticsearch third arty dependency in AEM

  • October 24, 2019
  • 7 replies
  • 9265 views

I am having some problems using elasticsearch-rest-high-level-client dependency in my project.

According to Elasticsearch documentation only this should be included:

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>7.4.0</version>
</dependency>

However, there were many NoClassDefinitionFound errors, so I embed the package inside maven-bundle-plugin. I realized that no transitive dependencies are included (altho I have   <Embed-Transitive>true</Embed-Transitive>)
so I've added many of them like this:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
  <instructions>
  <Embed-Dependency>org.apache.servicemix.bundles.solr-solrj, noggit,

  elasticsearch-rest-high-level-client,

  elasticsearch,

  elasticsearch-core,

  elasticsearch-rest-client,

  elasticsearch-x-content,

  elasticsearch-core,

  elasticsearch-secure-sm,

  rank-eval-client,

  lang-mustache-client,

  httpasyncclient,

  lucene-core;

   </Embed-Dependency>
  <Embed-Transitive>true</Embed-Transitive>
  <Embed-Directory>OSGI-INF/lib</Embed-Directory>
  <Export-Package>we.retail.core.model*</Export-Package>
  <Import-Package>
   *;resolution:=optional;

   </Import-Package>
  <Private-Package>
   we.retail.core*

   </Private-Package>
  <Sling-Model-Packages>
   we.retail.core.model

   </Sling-Model-Packages>
  <_fixupmessages>"Classes found in the wrong directory";is:=warning</_fixupmessages>
  </instructions>
  </configuration>
</plugin>

Now I have problem while indexing content: Method threw 'java.lang.NoClassDefFoundError' exception. Cannot evaluate org.elasticsearch.action.index.IndexRequest.toString()

So some other dependencies are missing or org.elasticsearch is not properly imported.

Is there a better way to do this? I've seen some with creating bundle with third party dependencies (using Eclipse to create plugin as standard OSGi package), but I am not sure how then to include that dependencies in main (core) bundle. Any other recommendation?

Note:

  <_fixupmessages>"Classes found in the wrong directory";is:=warning</_fixupmessages>

This was needed because when I add elasticsearch artifactid in Embed-package I can not run code because of this error:

[ERROR] Bundle com.adobe.cq.sample:we.retail.core:bundle:3.0.0-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/elasticsearch/monitor/jvm/JvmPid.class=org.elasticsearch.monitor.jvm.JvmPid}

[ERROR] Bundle com.adobe.cq.sample:we.retail.core:bundle:3.0.0-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/elasticsearch/core/internal/io/Streams.class=org.elasticsearch.core.internal.io.Streams}

[ERROR] Bundle com.adobe.cq.sample:we.retail.core:bundle:3.0.0-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/lucene/util/LongsRef.class=org.apache.lucene.util.LongsRef, META-INF/versions/9/org/apache/lucene/search/PointRangeQuery$1.class=org.apache.lucene.search.PointRangeQuery$1, META-INF/versions/9/org/apache/lucene/util/StringHelper.class=org.apache.lucene.util.StringHelper, META-INF/versions/9/org/apache/lucene/util/automaton/Automaton$Builder.class=org.apache.lucene.util.automaton.Automaton$Builder, META-INF/versions/9/org/apache/lucene/util/bkd/BKDRadixSelector$1$1.class=org.apache.lucene.util.bkd.BKDRadixSelector$1$1, META-INF/versions/9/org/apache/lucene/analysis/tokenattributes/CharTermAttributeImpl.class=org.apache.lucene.analysis.tokenattributes.CharTermAttributeImpl, META-INF/versions/9/org/apache/lucene/util/bkd/BKDRadixSelector$2$1.class=org.apache.lucene.util.bkd.BKDRadixSelector$2$1, META-INF/versions/9/org/apache/lucene/util/BytesRef.class=org.apache.lucene.util.BytesRef, META-INF/versions/9/org/apache/lucene/document/BinaryPoint$2.class=org.apache.lucene.document.BinaryPoint$2, META-INF/versions/9/org/apache/lucene/document/RangeFieldQuery$QueryType$1.class=org.apache.lucene.document.RangeFieldQuery$QueryType$1, META-INF/versions/9/org/apache/lucene/index/CodecReader.class=org.apache.lucene.index.CodecReader, META-INF/versions/9/org/apache/lucene/util/automaton/Automaton.class=org.apache.lucene.util.automaton.Automaton, META-INF/versions/9/org/apache/lucene/util/bkd/BKDRadixSelector.class=org.apache.lucene.util.bkd.BKDRadixSelector, META-INF/versions/9/org/apache/lucene/util/bkd/MutablePointsReaderUtils$2.class=org.apache.lucene.util.bkd.MutablePointsReaderUtils$2, META-INF/versions/9/org/apache/lucene/document/LongRange.class=org.apache.lucene.document.LongRange, META-INF/versions/9/org/apache/lucene/index/MergeReaderWrapper.class=org.apache.lucene.index.MergeReaderWrapper, META-INF/versions/9/org/apache/lucene/util/CharsRef.class=org.apache.lucene.util.CharsRef, META-INF/versions/9/org/apache/lucene/codecs/compressing/LZ4.class=org.apache.lucene.codecs.compressing.LZ4, META-INF/versions/9/org/apache/lucene/document/LatLonPointDistanceQuery$1.class=org.apache.lucene.document.LatLonPointDistanceQuery$1, META-INF/versions/9/org/apache/lucene/document/DoubleRange.class=org.apache.lucene.document.DoubleRange, META-INF/versions/9/org/apache/lucene/document/FloatRange.class=org.apache.lucene.document.FloatRange, META-INF/versions/9/org/apache/lucene/document/RangeFieldQuery$QueryType$2.class=org.apache.lucene.document.RangeFieldQuery$QueryType$2, META-INF/versions/9/org/apache/lucene/util/bkd/BKDReader.class=org.apache.lucene.util.bkd.BKDReader, META-INF/versions/9/org/apache/lucene/util/CharsRef$UTF16SortedAsUTF8Comparator.class=org.apache.lucene.util.CharsRef$UTF16SortedAsUTF8Comparator, META-INF/versions/9/org/apache/lucene/util/bkd/MutablePointsReaderUtils$3$1.class=org.apache.lucene.util.bkd.MutablePointsReaderUtils$3$1, META-INF/versions/9/org/apache/lucene/util/bkd/HeapPointWriter.class=org.apache.lucene.util.bkd.HeapPointWriter, META-INF/versions/9/org/apache/lucene/document/LatLonPointInPolygonQuery$1$1.class=org.apache.lucene.document.LatLonPointInPolygonQuery$1$1, META-INF/versions/9/org/apache/lucene/search/BooleanScorer$TailPriorityQueue.class=org.apache.lucene.search.BooleanScorer$TailPriorityQueue, META-INF/versions/9/org/apache/lucene/util/bkd/MutablePointsReaderUtils$1$1.class=org.apache.lucene.util.bkd.MutablePointsReaderUtils$1$1, META-INF/versions/9/org/apache/lucene/document/IntRange.class=org.apache.lucene.document.IntRange, META-INF/versions/9/org/apache/lucene/document/LongDistanceFeatureQuery$DistanceScorer$2.class=org.apache.lucene.document.LongDistanceFeatureQuery$DistanceScorer$2, META-INF/versions/9/org/apache/lucene/index/CheckIndex$VerifyPointsVisitor.class=org.apache.lucene.index.CheckIndex$VerifyPointsVisitor, META-INF/versions/9/org/apache/lucene/search/PointInSetQuery$SinglePointVisitor.class=org.apache.lucene.search.PointInSetQuery$SinglePointVisitor, META-INF/versions/9/org/apache/lucene/search/TopFieldCollector.class=org.apache.lucene.search.TopFieldCollector, META-INF/versions/9/org/apache/lucene/document/LatLonPointDistanceFeatureQuery$DistanceScorer$2.class=org.apache.lucene.document.LatLonPointDistanceFeatureQuery$DistanceScorer$2, META-INF/versions/9/org/apache/lucene/util/bkd/BKDWriter$BKDMergeQueue.class=org.apache.lucene.util.bkd.BKDWriter$BKDMergeQueue, META-INF/versions/9/org/apache/lucene/util/bkd/BKDWriter.class=org.apache.lucene.util.bkd.BKDWriter, META-INF/versions/9/org/apache/lucene/util/BytesRefArray.class=org.apache.lucene.util.BytesRefArray, META-INF/versions/9/org/apache/lucene/util/IntsRef.class=org.apache.lucene.util.IntsRef, META-INF/versions/9/org/apache/lucene/index/BitsSlice.class=org.apache.lucene.index.BitsSlice, META-INF/versions/9/org/apache/lucene/document/RangeFieldQuery$QueryType$3.class=org.apache.lucene.document.RangeFieldQuery$QueryType$3, META-INF/versions/9/org/apache/lucene/index/PointValues.class=org.apache.lucene.index.PointValues, META-INF/versions/9/org/apache/lucene/util/bkd/BKDWriter$OneDimensionBKDWriter.class=org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter}

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

7 replies

tadijam47062732
New Participant
October 25, 2019

No, I run clean install

Employee
October 24, 2019

Can you run a clean of the Maven project? It could be old data from before making the changes have persisted

tadijam47062732
New Participant
October 24, 2019

Tried that, but many things can not get resolved that way in my case.

cqsapientu69896
New Participant
February 26, 2020
Hi @tadijam47062732 were you able to resolve it in the end? I am facing a similar issue while using elasticsearch in AEM. Can you please let me know?
tadijam47062732
New Participant
May 6, 2020

@cqsapientu69896 you can see it here - I've manually created elasticsearch as separate OSGi bundles in Eclipse and reuse them in my project. You can check everything here: https://github.com/tadijam64/search-engines-comparison

Employee
October 24, 2019

Check this repo ... its old but can help you to get what you are looking for:

GitHub - viveksachdeva/elasticsearch-cq: Integration of ElasticSearch with CQ5