0

假设我的别名car-alias指向car-index-1. 我现在想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响应不能保证写操作立即指向正确的索引?

4

2 回答 2

1

是的,别名是原子car-index-2更改的,并且会在调用返回时立即指向。

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

于 2022-01-17T12:21:06.410 回答
0

除了@Val 的回答:

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

从有关is_write_index添加操作选项的文档中:

is_write_index (可选,布尔值) 如果为 true,则设置别名的写入索引或数据流。

如果别名指向多个索引或数据流并且未设置 is_write_index,则别名将拒绝写入请求。如果索引别名指向一个索引并且未设置 is_write_index,则该索引将自动充当写入索引。[...]

只有添加操作支持此参数。

于 2022-01-17T12:28:07.330 回答