我有一个非常简单的ES客户端,它将向本地ES服务器(ES的1.4.1版本)发送查询并获取结果并显示给用户。现在,我将此代码带到了另一个项目X,并尝试将其与X一起使用,因为我需要一些来自X的API。 现在,当我在X中运行相同的代码时,我得到此错误,不知道如何解决。你能帮我解决这个问题吗? 线程“main”中的异常java.lang.NoSuchFieldError:LUCENE_3_6
at org.elasticsearch.Version.<clinit>(Version.java:45)
at org.elasticsearch.node.internal.InternalNode.<init>(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)
答案 0 :(得分:13)
您似乎正在尝试将项目中的Elasticsearch和Lucene用作单独的库。
Elastissearch 1.4.1基于Lucene 4.10.2。您可以查看发布博客页面here以获取更多详细信息。
要解决您的问题,您需要将Lucene库版本更新为4.10并使用 Version.LUCENE_CURRENT而不是LUCENE_3_6。
您可以找到here Lucene 4.10核心API文档。
我希望这会有所帮助。如果您有疑问,请不要犹豫。
答案 1 :(得分:2)
在另一种情况下也会发生同样的错误 - 如果有人在与先前版本相同的目录中解压缩新的ElasticSearch版本。 然后它在“ElasticSearch / lib”目录中以两个版本的jar结束。启动时会出现错误。
在这种情况下,修复是在没有剩余的情况下进行干净的ElasticSearch安装。