我们一直使用此链接作为参考,以适应索引中字段映射的任何更改,并且停机时间为零。
问题:考虑上面链接中的相同示例,当我们使用_reindex API将数据从 my_index_v1 重新索引到 my_index_v2 时。ElasticSearch 是否保证在 my_index_v1 中发生的任何并发更新肯定会使其成为 my_index_v2 ?
例如,文档可能会在 my_index_v1 中被 api 重新索引到 my_index_v2 之前或之后更新。
最终,我们只需要确保虽然我们不希望任何映射更改造成任何停机时间(因此 _reindex 使用别名和 ES 的其他很酷的东西),我们还希望确保在此期间没有丢失任何添加/更新大规模的重新索引正在进行中,因为我们正在讨论重新索引 > 50GB 的数据。
谢谢,
桑迪普
reindex api 不会考虑流程启动后所做的更改。您可以做的一件事是完成重新索引流程后。您可以使用version_type:external再次启动流程。这将导致仅从源索引到目标索引的文档具有不同版本并且不存在
这是例子
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter",
"version_type": "external"
}
}
Run Code Online (Sandbox Code Playgroud)
将 version_type 设置为 external 将导致 Elasticsearch 保留源中的版本,创建任何丢失的文档,并更新目标索引中版本比源索引中版本旧的任何文档:
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |