2014-12-05 124 views
3

我有一個非常簡單的ES客戶端,它將向本地ES服務器(ES的1.4.1版本)發送查詢並獲得結果並顯示給用戶。現在,我將此代碼帶到了另一個項目X中,並試圖將它與X一起使用,因爲我需要X中的一些API。 現在,當我在X中運行相同的代碼時,出現此錯誤,不知道如何解決。你能幫我解決這個問題嗎? 異常線程「main」 java.lang.NoSuchFieldError的:LUCENE_3_6彈性搜索Lucene版本錯誤

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

在項目中是否缺少Lucene jar或Lucene的多個版本? – mindas 2014-12-05 10:11:41

+0

如果提供的答案之一解決了您的問題,請接受它來解決問題。謝謝 ! – eliasah 2016-06-02 08:56:26

回答

12

看來你要使用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

感謝您的幫助。這真的有用。而且,除了這篇文章,這個問題還沒有解決辦法。你能否告訴我爲什麼最新版本不適用於彈性搜索的v 1.5? – 10101010 2015-03-30 21:11:54

+1

抱歉,我無法回答elasticsearch v1.5問題。它最近被髮布了,我還沒有看過它。嘗試驗證最新版本的Elasticsearch使用的lucene版本。 – eliasah 2015-03-30 21:14:09

1

在另一種情況下也會發生同樣的錯誤 - 如果有人在與之前版本相同的目錄中解壓縮新的ElasticSearch版本。 然後它以兩個版本的'ElasticSearch/lib'目錄中的瓶子結束。該錯誤在啓動時出現。

在這種情況下,修復方法是在沒有殘留物的情況下安裝乾淨的ElasticSearch安裝。