如果不存在则将对象附加到数组elasticsearch

Append object to array if not exists elasticsearch

我有以下代码

body: {
    script: {
        source: 'ctx._source.permissions.add(params.permission);',
        params: {
            permission
        }
    }
}

权限对象是附加到权限数组的对象。 权限对象将有一些 id 属性。所以权限对象会是这样的:

{
  id: 'some unique value',
  name: 'permission name
}

如果该数组中没有具有 属性 id 的权限对象,我该如何添加它,所以如果该数组具有一个具有 params.id 值的对象,我将尝试添加,添加应该会失败...

尝试以下 source :

"source":"List perm=ctx._source.permissions; if(perm!=null && !perm.stream().anyMatch(p-> p.id.equals(params.permission.id))){ctx._source.permissions.add(params.permission)}

我建议您阅读 painless 文档。