原子别名交换在完全不相关的索引上失败并带有index_not_found_exception

时间:2018-03-01 16:33:55

标签: elasticsearch elasticsearch-2.4

我想用零停机时间替换和索引,如the ES documentation

中所述

我是这样做的:

  • 使用新数据
  • 创建新索引my_index_v2
  • 刷新新索引
  • 然后通过执行以下请求在原子操作中交换它们:

POST /_aliases

{
    "actions": [
        { "remove": { "index": "*", "alias": "my_index" }},
        { "add":    { "index": "my_index_v2", "alias": "my_index" }}
    ]
}

这可以按预期工作,除非它随机响应404响应。错误消息是:

{
   "error": {
      "root_cause": ... (same)
      "type": "index_not_found_exception",
      "reason": "no such index",
      "resource.type": "index_or_alias",
      "resource.id": "my_unrelated_index_v13",
      "index": "my_unrelated_index_v13"
   },
   "status": 404
}
  • 之后,只有当交换工作时,我们才会删除与此关联的现在未使用的索引,并且只删除此别名。

整个操作每隔几分钟就会定期发生。与所描述的操作类似的操作可能在群集中同时发生在其他别名/索引上。错误是每隔几个小时随机发生的。

这些操作是否会互相干扰?发生了什么事?

编辑:最后澄清了DELETE步骤。

0 个答案:

没有答案