2016-09-27 64 views
0

你好我試圖執行由查詢更新,我使用此代碼類無法解析。它是直接從所需要的.class文件中引用

UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE.newRequestBuilder(client); 

Script script = new Script("ctx._source.RELATIONSHIP_DEPTH = doc['"+AggregateValue_First+"'].value*doc['"+AggregateValue_Second+"'].value"); 

ubqrb.source(indexName) 
    .script(script) 
    .filter(QueryBuilders.matchAllQuery()) 
    .get(); 

但我得到這些錯誤:

The type org.elasticsearch.action.support.replication.IndicesReplicationOperationRequestBuilder cannot be resolved. It is indirectly referenced from required .class files - The method source(String) is undefined for the type UpdateByQueryRequestBuilder

我已經使用在reindex.jar和我建立我的節點是這樣的:

node = nodeBuilder().clusterName(clusterName).client(true).node(); 
client = node.client(); 

我使用elasticsearch-2.3.4.jar,當我打字這樣的,我沒有得到任何錯誤:

UpdateByQueryClientWrapper ubqrb = new UpdateByQueryClientWrapper(client); 
ubqrb.prepareUpdateByQuery().setScript("ctx._source.RELATIONSHIP_DEPTH = doc['"+AggregateValue_First+"'].value"+operator+"doc['"+AggregateValue_Second+"'].value"); 

的問題,當我使用的查詢,我應該使用哪個UpdateByQuery罐子的版本出現?

+0

你只需要運行一次這個代碼來添加你的字段?如果是的話,爲什麼不簡單地通過Sense或curl來運行這個通過查詢的更新? – Val

+0

事情是我建立一個類,它會自動計算值,並創建所有文檔的字段,基本上就像一個公式,這就是爲什麼我需要此代碼,此外,我在一個函數內使用它,所以每當函數claled它將創建一個具有新計算值的新字段。 – Dhirish

+0

UpdateByQuery是用於您的用例的方式,但我不明白爲什麼會出現錯誤。看來你使用的庫與你正在運行的ES版本不兼容。你正在運行哪個版本的ES? – Val

回答

0

The type org.elasticsearch.action.support.replication.IndicesReplicationOperationRequestBuilder cannot be resolved. It is indirectly referenced from required .class files - The method source(String) is undefined for the type UpdateByQueryRequestBuilder

這意思是,無論是在自己的代碼或在您的直接依賴的一個一類是試圖使用類org.elasticsearch.action.support.replication.IndicesReplicationOperationRequestBuilder,這是目前不是當前已添加任何.jar文件的一部分您的應用程序的依賴項。

用一些谷歌搜索(*)可以發現這個類曾經是elasticsearch.jar的一部分,例如在elasticsearch-1.5.1.jar中。因此,你應該通過你的依賴設置,並確保你使用的依賴關係(和在你自己的代碼上調用的類)的版本是相互一致的。

像Maven,Ivy,Gradle或Sbt這樣的構建工具會使這個更簡單一些。通過手動處理依賴關係,它的工作量更大,但仍然可行。


(*)如何發現這一點:

  1. Search for the class in question
  2. Open a link to JavaDocs。查看該頁面描述的軟件包版本。
+0

非常感謝先生Tomppa它的工作,新版本缺少索引複製,我只是將依賴關係設置爲舊版本,現在它的工作,非常感謝先生。 – Dhirish

+0

現在我的reindex和elasticsearch罐子相互衝突,而且我的瓶子地獄,如果我給作爲maven的依賴項,這將解決這個問題嗎? – Dhirish

+0

構建工具將使生活變得更簡單,但不是萬能的。基本上,您仍然需要確保使用不同組件的兼容版本(但通常可以通過從Internet搜索信息來解決此問題)。 – t0mppa

相關問題