如果值不存在则更新 ElasticSearch 脚本

ElasticSearch script to update if the value not exist

我正在尝试使用 Java 更新 es 文档。 我的文档如下

"_source": {

    "gender": "male" ,
    "names": ["name1"]

}

我需要向 names 列表中添加更多名称。但我不想重复。 如何在没有重复值的情况下更新 ES 文档中的数组?

我试过类似的方法。但它不起作用。

client.prepareUpdate(index,type,id)
         .addScriptParam("newobject", "newName")
        .setScript("ctx._source.names.contains(newobject) ? ctx.op = \"none\" :  ctx._source.names+=newobject ").execute().actionGet(); 

我们的想法是简单地在结果列表上调用 unique()

client.prepareUpdate(index,type,id)
         .addScriptParam("newobject", "newName")
        .setScript("ctx._source.names+=newobject; ctx._source.names = ctx._source.names.unique(); ").execute().actionGet(); 

此外,要使其正常工作,您需要确保 scripting is enabled.