java - Maven依赖版本冲突: Elasticsearch and Lucene

标签 java maven elasticsearch lucene

我的应用程序使用 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/

相关文章:

java - Google Suggests 之类的功能在 Java SWT 中是否可行?

javascript - 缩小后修改缩小后的js文件

java - 扩展抽象类时出现 Spring BeanDefinitionStoreException

java - 我如何使用 maven 构建 natty 有什么问题?

java - java中两个矩形之间的碰撞检测

java - 关于 Struts-Default 和 json-default 扩展

java - 类数组中的空指针异常

elasticsearch - ES-基于存储桶属性中的值而不是文档值的子存储桶

c# - ElasticSearch 版本 2.x 中的扫描和滚动替代 (NEST C#)

apache-spark - es.scroll.limit和es.scroll.size有什么区别