gpt4 book ai didi

java - 如何使用 java api 执行 BULK UpdateByQuery - Elasticsearch 5.x

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:10 26 4
gpt4 key购买 nike

我有多个 updateByQuery 请求,并正在寻找一种方法将它们组合在一起,然后执行(出于性能原因)。

<小时/>

示例:

按字段查询 ||字段11111 ||字段222222 ||字段333333 ||

xxxxxxxxxxxx ||新值 || newValueee ||新值 ||

yyyyyyyyyyyy ||新值 || newValueee ||新值 ||

zzzzzzzzzzzz ||新值 || newValueee ||新值 ||

<小时/>

到目前为止,似乎我必须对上面的每一行执行以下查询:

UpdateByQueryRequestBuilder updateByQueryRequestBuilder = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
updateByQueryRequestBuilder
.source("myIndexName")
.filter(QueryBuilders.matchQuery("QueryByField","xxxxxxxxxxxx"))
.script(new Script("ctx._source.field11111 = \"newValue\"" , ScriptService.ScriptType.INLINE, null, null))
.get();

但我想知道,是否有类似于我们对 UpdateRequest 和 BulkRequestBuilder 所做的事情可用于 UpdateByQuery?

最佳答案

一种解决方案是通过任何术语进行查询并验证在脚本中应用了哪个条件。

        String script = "if(ctx._source.QueryByField != null and ctx._source.QueryByField == \"xxxxxxxxxxxx\") { "
+ " ctx._source.field11111 = \"newValue\";"
+ " ctx._source.field222222 = \"newValueee\";"
+ " ctx._source.field333333 = \"newValuee\";"
+ "}"
+ ".. outher conditions";


UpdateByQueryRequestBuilder requestx = UpdateByQueryAction.INSTANCE.newRequestBuilder(elastic)
.source("myIndexName")
.filter(QueryBuilders.termsQuery("QueryByField ", "xxxxxxxxxxxx", "yyyyyyyyyyyy", "zzzzzzzzzzzz"))
.script(new Script(script, ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG, null));

关于java - 如何使用 java api 执行 BULK UpdateByQuery - Elasticsearch 5.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223698/

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