在ES中,需要更新文档中的现有字段。我可以轻松地在文档中添加新字段。
POST {"doc":{"newFields":"value"}}
- 它会在现有文档中添加新字段。但是我无法添加这种情况。
{"name":"aa","otherinfo": {"hobbies":["cricket","football"]} }
任何帮助?
答案 0 :(得分:0)
请查看Update API。
你可以update with a partial document。例如:
POST test/_doc/1/_update
{
"doc" : {
"name" : "new_name"
}
}
但此外,您可以使用scripting更新文档。例子:
我们可以在标签列表中添加一个标签(注意,如果标签存在,它仍会添加它,因为它是一个列表):
POST test/_doc/1/_update
{
"script" : {
"source": "ctx._source.tags.add(params.tag)",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}
或
我们还可以在文档中添加一个新字段:
POST test/_doc/1/_update
{
"script" : "ctx._source.new_field = 'value_of_new_field'"
}
或
或从文档中删除字段:
POST test/_doc/1/_update
{
"script" : "ctx._source.remove('new_field')"
}
等等。