我尝试在Adobe Experience Manager中使用Java高级Rest客户端完成Lucene、Solr和Elasticsearch搜索引擎的比较项目。
我对elasticsearh的实现有一些问题。代码如下:
> 父pom.xml中的
依赖项(在核心pom.xml中定义相同)
<!-- Elasticseach dependencies -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.0</version>
</dependency>
我使用的唯一一行代码来自上面的依赖项
try (RestHighLevelClient client = new
RestHighLevelClient(RestClient.builder(new HttpHost(server, port,
protocol),
new HttpHost(server, secondPort, protocol)));)
{
}
catch (ElasticsearchException e)
{
LOG.error("Exception: " + e);
}
协议=“HTTP”,服务器=“localhost”,端口=9200,第二端口=9201
我知道依赖版本通常有问题,但在这种情况下,所有的依赖版本都是7.4.0。此外,elasticsearch 7.4.0v也在3个节点上本地运行。
这个项目是在We.Retail项目上完成的,所以很容易复制。此外,出现此错误的所有代码可在以下网址获得:https://github.com/tadijam64/search-engines-comparis-on-we-retail/tree/elasticsearch-integration AEM 6.4V。
任何信息或想法都是赞赏的。
更新我尝试添加以下内容,以便在外部嵌入这些依赖项,因为它们不是OSGi依赖项:
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Embed-Dependency>org.apache.servicemix.bundles.solr-solrj, log4j, noggit, zookeeper,
elasticsearch-rest-high-level-client
</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>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
错误仍然存在。我也试着把它添加到“export-package”中,但没有任何帮助。
根据Elasticsearch文档,我使用Elasticsearch所需要的就是
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.0</version>
</dependency>
但随后发生NoClassDefounderRors。这似乎是传递依赖的问题。不确定,但任何想法都值得赞赏。
其他一些建议可以在这里找到:https://forums.adobe.com/thread/2653586
我也尝试过添加它的可传递依赖项,比如org.elasticsearch和org.elasticsearch.client,但都不起作用。同样的错误,只是其他类。
AEM版本6.4,Java版本:jdk1.8.0_191.jdk
所以我的猜测是对的,虽然
存在,但传递依赖项并不包括在内。
当在AEM问题上运行elasticsearch作为搜索引擎时,以下内容是必需的:
>
我已在pom.xml中添加了所有可传递依赖项(版本在parent/pom.xml中定义):
<!-- Elasticsearch -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-x-content</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>rank-eval-client</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-imaging</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>lang-mustache-client</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
</dependency>
将所有第三方依赖项作为
<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-rest-client,
elasticsearch-x-content,
elasticsearch-core,
rank-eval-client,
lang-mustache-client,
httpasyncclient;
</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>
需要注意的重要事项:
<_fixupmessages>"Classes found in the wrong directory";is:=warning</_fixupmessages>
虽然很有挑战性,但我最终还是解决了。谷歌上有很多类似或相同的问题,所以我希望这会对某人有所帮助。感谢每一个试图帮忙的人。
我正在使用Spring Boot 1.4.0和Spring-Cloud-scuth,这里是我的pom: 这是我的依赖关系树: 看起来SpringBootSleuth已经覆盖了依赖项,因为SpringBoot1.4使用Spring4.3。2.释放。我不需要它,如何避免这种行为??
在应用中,您希望使用不同的类来处理不同的任务以保持代码的简洁。我们把这些类称为 依赖。如何将这些依赖关系传递给将在后台任务调用的方法呢? 当您在后台任务中调用静态方法时,仅限于应用程序的静态上下文,这需要您使用以下获取依赖关系的模式: 通过 new 手动实例化依赖 服务定位器模式 抽象工厂模式 或 建设者模式 单例模式 然而,所有这些模式使您的应用程序的单元可测试性方面变得非常复杂。为了解决这个问
主要内容:依赖传递,依赖范围,依赖范围对传递依赖的影响,依赖调节Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C 是 A 的间接依赖。 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖,Mav
本文向大家介绍DBMS中的传递依赖,包括了DBMS中的传递依赖的使用技巧和注意事项,需要的朋友参考一下 什么是传递依存关系 当间接关系引起功能依赖性时,称为传递依赖性。 如果P-> Q且Q-> R为真,则P-> R为传递依赖。 要实现3NF,请消除传递依赖性。 示例 <电影列表> Movie_ID Listing_ID Listing_Type DVD_价格($) M08 L09 犯罪 180 M
我在Liferay DXP中为Google Analytics API编写了代码。我已经通过在build.gradle中编写来导入了以下jar 此外,我还使用以下代码将其包含在bnd.bnd文件中: 该模块编译良好,我能够得到JAR。但是当我在服务器上部署这个jar时,我总是得到未解决的需求:import-package:error。 我知道问题出在传递依赖上。我在Liferay社区的某个地方读到
这是我的第一个问题。我必须使用ES rest高级客户端。我的ES服务器是6.8。x、 所以我写了我的构建。gradle文件。 但我的项目依赖性如下所示。 Gradle:org.elasticsearch.client:elasticsearch ch-rest-客户端:7.6.2 Gradle:org.elasticsearch.client:elasticsearch ch-rest-高级别-客