三人行必有我师

如何修改nested字段内容

Elasticsearch | 作者 lzc | 发布于2018年10月22日 | 阅读数:11265

修改其他字段,直接update即可,
但是修改nested,直接update报错,Cannot add a value for field [comments.name] since one of the intermediate objects is mapped as a nested object: [comments]
 那需要修改其中一个nested字段,需要将该文档全部查出来,然后设置修改字段插入到es中?
有没有什么简单办法?
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: liuliuliu

nested类型的增删改查样例参考:https://blog.csdn.net/laoyang3 ... 50393

yayg2008

赞同来自:

贴出你的mapping跟update语句看一下。

lzc

赞同来自:

comments中有两个对象,我想更新其中一个,请指教。

yayg2008

赞同来自:

刚刚试了下,直接按你的写法,整个comments会被替换成传入的。
如果想只更新某个字段,试试 update by query。

heeexy

赞同来自:

https://www.elastic.co/guide/c ... .html
如果要增删改一个嵌套对象,我们必须把整个文档重新索引才可以。

rochy - rochy_he

赞同来自:

可以尝试使用 script 进行更新试一下 ,请参考官方的例子
POST test/_doc/1/_update
{
"script" : {
"source": "ctx._source.counter += params.count",
"lang": "painless",
"params" : {
"count" : 4
}
}
}


POST test/_doc/1/_update
{
"script" : {
"source": "ctx._source.tags.add(params.tag)",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}

要回复问题请先登录注册