elasticsearch UpdateRequest 中的 Where 子句

Where clause in elasticsearch UpdateRequest

我有一个 elasticsearch 索引,其中的 id 是自动生成的。当需要更新任何文档时,我必须首先搜索文档(使用其他参数)以获取 ID,然后在更新请求中使用此 ID。

有没有一种方法可以在更新请求本身中提供 where 子句?

没有对此的直接支持。 但是有一个社区驱动的插件可以用于它。 此插件可以根据搜索条件更新文档。

你可以在这里找到它 - https://github.com/yakaz/elasticsearch-action-updatebyquery

您可以使用 UpdateRequest 的脚本功能。可以使用 if 语句提供 where 条件。

示例:

updateRequest.script(new Script(ScriptType.INLINE, "painless",
    "if (ctx._source.userName== 'XXX') {ctx._source.age= '21'}",Collections.emptyMap()));