在ElasticSearch中的1000万个文档中添加新字段

Bil*_*yfm 3 elasticsearch

我有ElasticSearch索引,可以存储超过1000万个文档。我需要遍历所有索引并为每个文档添加新的字段和值。我知道两种方法:1.使用滚动搜索获取所有结果,并使用BULK api将所有文档复制到新索引中(在复制时添加新字段)。将所有文档复制到新索引后-切换别名。2.使用滚动搜索和批量API更新现有索引中的所有文档(无需复制到新索引和切换别名)。

我不明白,为什么推荐第一种方法?我可以只使用2种方法吗?在使用2种方法运行程序时,是否有可能索引发生问题?我需要更新的索引包含实时产品数据,我担心客户可能会受到某种影响

pra*_* kp 6

使用脚本轻松

POST /mysqltest/_update_by_query
{
  "query": {
    "match_all": {}
  },
 "script": { "inline": "ctx._source.category = \"10\";" } --> category is new key that to be added in all documents
}
Run Code Online (Sandbox Code Playgroud)