通过 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.
假设我得到了指向 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.