- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有多个 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/
我正在使用updateByQuery更新文档,但是我收到版本冲突错误。如何处理此错误。我可以在 flex 搜索中使用wait_for_completion选项以避免版本冲突错误吗?还有其他解决方案来解
我正在使用 Elasticsearch 2.3 以及官方php驱动程序。 updateByQuery 给我在php中使用的麻烦。对于如何使用它的一些帮助将不胜感激。 $client =
我正在使用一个非常大的数据集,我需要清理(删除)某些文档的某些属性,然后立即将此类属性添加到其他文档。有时,具有被删除属性的文档是我应该更新的文档。问题是有时会出现 ConflictError,我想知
您有一个包含两个文档的 Elasticsearch 索引: [ { "_index": "myIndex", "_type": "myType", "_id": "es14
使用elasticsearch.js(node.js)SDK,我们可以使用client.index({ ... })向上插入文档(如果不存在,请插入,否则进行更新)。 但是,如果我只想更新一个特定的字
我有多个 updateByQuery 请求,并正在寻找一种方法将它们组合在一起,然后执行(出于性能原因)。 示例: 按字段查询 ||字段11111 ||字段222222 ||字段333333 || x
我是一名优秀的程序员,十分优秀!