elasticsearch 向所有文档添加字段

Nic*_*ico 4 search elasticsearch

我是新来的。

我在一个索引中有大约 20 万个文档,所有文档都具有相同的类型。我想在每个文档中再添加一个字段“类别”(这是一个关键字字符串)。

有没有方便的方法来实现这一目标?我知道通常一个查询只能得到 10000 个文件

非常感谢

小智 8

POST index_name/_update_by_query
{
  "script": {
    "inline": "ctx._source.field_name = \"value\"",
    "lang": "painless"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供此代码片段,它可能会提供一些有限的即时帮助。[正确的解释](https://meta.stackexchange.com/q/114762/349538)将通过展示为什么这是一个很好的问题解决方案来极大地提高其长期价值,并将使其对未来的读者更有用与其他类似的问题。请[编辑]您的答案以添加一些解释,包括您所做的假设。 (5认同)

Jua*_*ali 8

迟到了,但希望这可以帮助你。

您可以使用_update_by_query API。

请注意,您可以使用请求的查询部分定义更新条件。如果您只需要更新索引中的所有文档,则只需删除查询部分即可。

POST my-index-000001/_update_by_query
{
  "script": {
    "source": "ctx._source.count++",
    "lang": "painless"
  },
  "query": {
    "term": {
      "user.id": "kimchy"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:从 6.x 开始,inline里面的选项就被贬值了。_update_by_query你应该改用source