通过 API 更改 Elasticsearch 别名的索引时,写入操作是否会在响应后立即指向正确的索引?

When changing the index of an Elasticsearch alias via API, do write operations immediately point to the right index after the response?

假设我得到了指向 car-index-1 的别名 car-alias。我现在希望 car-alias 指向 car-index-2

因此,我对 Aliases API 执行以下 POST 请求:

{
  "actions": [
    {
      "remove": {
        "index": "car-index-1",
        "alias": "car-alias"
      }
    },
    {
      "add": {
        "index": "car-index-2",
        "alias": "car-alias"
      }
    }
  ]
}

我收到以下回复:

{
   "acknowledged": true
}

我现在可以立即将数据索引到 car-alias 中并最终在 car-index-2 中吗?

或者 "acknowledged": true 响应不能保证写入操作立即指向正确的索引?

是的,别名已更改 atomically 并将在调用 returns.

时立即指向 car-index-2

如文档中所述“...在交换期间,别名没有停机时间并且从不同时指向两个流。”

除了@Val的回答:

由于在您的情况下,别名仅指向一个索引,因此“下一个”索引会自动设置为写入索引。

来自关于添加操作的 is_write_index 选项的文档:

is_write_index (Optional, Boolean) If true, sets the write index or data stream for the alias.

If an alias points to multiple indices or data streams and is_write_index isn’t set, the alias rejects write requests. If an index alias points to one index and is_write_index isn’t set, the index automatically acts as the write index. [...]

Only the add action supports this parameter.