按查询更新以在弹性搜索中一次更新多个字段

时间:2016-07-28 05:28:23

标签: elasticsearch

我有一个弹性搜索查询更新的用例。

我正在保留像 -

这样的文档
"a" : "1",
"b" : "2",
"version1" : 456
"c" : {
   "version2" : 123,
   "d" : "3"
}

现在依赖于我的用例 -

  1. 我想要更新字段a,b和version1
  2. 或者我会更新字段d和版本2.
  3. 我在Update By Query in Elasticsearch using Java得到了部分答案。

    我正在尝试这样的事情 -

        BulkIndexByScrollResponse r = ubqrb.script(script)
            .script(script1)
            .script(script2)
            .script(script3)
            .script(script4)
            .filter(qb).get();
    

    然而,UpdateByQueryRequestBuilder不允许我提供多个脚本,只允许使用最后一个脚本,即使用script4并忽略休息。

    我也试过了 -

        Script script4 = new Script("ctx._source.a=\"abc\",b=\"xyz\"");
    

    然而这个也失败了。

    任何想法可以通过哪里使用更新来完成。 提前致谢

1 个答案:

答案 0 :(得分:0)

尝试:

new Script("ctx._source.a=\"abc\"; ctx._source.b=\"xyz\"");