如果值不存在则更新 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.
我正在尝试使用 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.