gpt4 book ai didi

elasticsearch - 通过查询进行的 Elasticsearch 更新未反射(reflect)正确更新的文档数

转载 作者:行者123 更新时间:2023-12-03 01:19:27 25 4
gpt4 key购买 nike

我正在使用Java Rest客户端通过查询调用运行更新:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-update-by-query.html

这是我的代码:(仅提取相关部分并更新了脚本中的某些字段)

UpdateByQueryRequest queryRequest = new UpdateByQueryRequest(indexName);
Script script = new Script(ScriptType.INLINE, "painless", "if (ctx._source.someKey == someVal) {ctx._source.someKey = someOtherVal;}",Collections.emptyMap());
queryRequest.setScript(script);
BulkByScrollResponse bulkResponse = aesClient.updateByQuery(queryRequest, RequestOptions.DEFAULT);

上面的代码可以正常工作,并且相关文档已更新。但是,无论何时执行以下操作:
long updatedDocs = bulkResponse.getUpdated();

存储在 updatedDocs中的值不反射(reflect)要更新的实际文档数。存储在其中的值是它处理的文档数。

根据 documentation,它应该返回更新的文档数。

如果我错了,请纠正我。有解决办法吗?

最佳答案

您应该将脚本修改为:

if (ctx._source.someKey == someVal) {ctx._source.someKey = someOtherVal;} else { ctx.op='noop'}

ctx.op ='noop'会从 update_by_query documentation中指定的更新中删除该文档

此无操作将在以下位置报告:
long noops = bulkResponse.getNoops(); 

关于elasticsearch - 通过查询进行的 Elasticsearch 更新未反射(reflect)正确更新的文档数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60947011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com