你好我試圖執行由查詢更新,我使用此代碼類無法解析。它是直接從所需要的.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
罐子的版本出現?
你只需要運行一次這個代碼來添加你的字段?如果是的話,爲什麼不簡單地通過Sense或curl來運行這個通過查詢的更新? – Val
事情是我建立一個類,它會自動計算值,並創建所有文檔的字段,基本上就像一個公式,這就是爲什麼我需要此代碼,此外,我在一個函數內使用它,所以每當函數claled它將創建一個具有新計算值的新字段。 – Dhirish
UpdateByQuery是用於您的用例的方式,但我不明白爲什麼會出現錯誤。看來你使用的庫與你正在運行的ES版本不兼容。你正在運行哪個版本的ES? – Val