你好我试图执行由查询更新,我使用此代码类无法解析。它是直接从所需要的.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