弹性搜索Lucene版本错误

我有一个非常简单的ES客户端,它将向本地ES服务器(ES的1.4.1版本)发送查询并获取结果并显示给用户。 现在,我把这个代码带到了一个不同的项目X,并尝试将它与X一起使用,因为我需要一些来自X的API。现在,当我在X中运行相同的代码时,我得到这个错误而不是知道如何解决。 你能帮我解决这个问题吗? 线程“main”中的exceptionjava.lang.NoSuchFieldError:LUCENE_3_6

at org.elasticsearch.Version.(Version.java:45) at org.elasticsearch.node.internal.InternalNode.(InternalNode.java:136) at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159) at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166) at org.bmi.elasticsearch.ranking.TestClass2.main(TestClass2.java:54) 

您似乎尝试在项目中将Elasticsearch和Lucene用作单独的库。

Elastissearch 1.4.1基于Lucene 4.10.2。 您可以在此处查看发布博客页面以获取更多详细信息。

要解决您的问题,您需要将Lucene库版本更新为4.10并使用Version.LUCENE_CURRENT而不是LUCENE_3_6。

你可以在这里找到Lucene 4.10核心API文档。

我希望这会有所帮助。 如果您有疑问,请随时评论。

在另一种情况下也会出现相同的错误 – 如果有人在与先前版本相同的目录中解压缩新的ElasticSearch版本。 然后它最终在’ElasticSearch / lib’目录中两个版本的jar 。 启动时出现错误。

在这种情况下,修复是在没有剩余的情况下进行干净的ElasticSearch安装。