弹性搜索更新文档中的字段

时间:2018-02-21 14:41:31

标签: hadoop elasticsearch elasticsearch-plugin

在ES中,需要更新文档中的现有字段。我可以轻松地在文档中添加新字段。

POST {"doc":{"newFields":"value"}} 

- 它会在现有文档中添加新字段。但是我无法添加这种情况。

{"name":"aa","otherinfo": {"hobbies":["cricket","football"]} }
  1. 这里我需要添加另一个字段eduction字段 - 我该怎么办?
  2. 假设我需要将篮球添加到现有的爱好中
  3. 从兴趣爱好中移除所有字段并添加ONLY throwball
  4. 任何帮助?

1 个答案:

答案 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')"
}

等等。