【问题标题】:elasticsearch add field to all documentselasticsearch将字段添加到所有文档
【发布时间】:2020-11-13 03:28:46
【问题描述】:

我是新来的。

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

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

非常感谢

【问题讨论】:

标签: elasticsearch search


【解决方案1】:
POST index_name/_update_by_query
{
  "script": {
    "inline": "ctx._source.field_name = \"value\"",
    "lang": "painless"
  }
}

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
【解决方案2】:

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

您可以使用_update_by_query API。

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

POST my-index-000001/_update_by_query
{
  "script": {
    "source": "ctx._source.count++",
    "lang": "painless"
  },
  "query": {
    "term": {
      "user.id": "kimchy"
    }
  }
}

注意_update_by_query 中的 inline 选项自 6.x 起已贬值。你应该改用source

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 2013-10-26
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多