我的应用程序使用 Elasticsearch 的传输客户端连接到 ES 1.7.2
集群。根据documentation ,它使用 Lucene 4.10.4,所以下面是我的应用程序中的依赖版本:
Elasticsearch : 1.7.2
Lucene : 4.10.4
现在,我想使用基于 lucene 的库 ( here ) 来执行内存渗透。查看它的 pom.xml
,它似乎使用 Lucene 6.3.0 库。因此,添加此依赖项后,我的应用程序无法启动,因为 Elasticsearch 需要 Lucene 4.10.4 并且 maven 使用 6.3.0 覆盖它,我尝试了以下选项:
- 搜索与 Lucene 4.10.4 兼容的早期版本的渗透库 - 没有成功
- 尝试让 Elasticsearch 与 Lucene 6.3.0 一起工作 - 没有成功。我可以尝试更新 elasticsearch 依赖项版本,但我的应用程序将无法使用新版本连接到 1.7.2 集群(而且我无法升级集群)。
还有其他选择吗?
最佳答案
您可以尝试排除其他库对 lucene 的依赖,并希望它能在 4.x 版本上工作。
在你的 Maven pom 中,执行
<dependency>
<groupId>com.github.flaxsearch</groupId>
<artifactId>luwak</artifactId>
<version>1.4.0</version>
<exclusions>
<exclusion>
<groupId>[the lucene lib group]</groupId>
<artifactId>[the lucene lib artifact]</artifactId>
</exclusion>
</exclusions>
</dependency>
从技术上讲,这就是解决版本冲突的方法。但不能保证可以构建应用程序。
关于java - Maven依赖版本冲突: Elasticsearch and Lucene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784670/