我想为高负载的基于elasticsearch的搜索系统实现现金。我想把现金存入特殊弹性指数。问题是在缓存预热:每小时我的系统需要用新的结果更新缓存的结果。
所以,我创建了一个新的空索引,并用更新的结果填充它,然后我需要交换旧索引和新索引,这样用户就可以使用新的缓存结果。
问题是:如何有效地交换两个elasticsearch索引
?对于这种情况,您可以使用"索引别名">
。你有一个别名指向你当前的索引,你用新的记录填充一个新的索引,然后你把这个别名指向新的索引。
像这样:
- 当前索引名称为items-2022-11-26-001
- 创建别名项指向项目-2022-11-26-001
POST _aliases
{
"actions": [
{
"add": {
"index": "items-2022-11-26-001",
"alias": "items"
}
}
]
}
- 用新的数据项创建新的索引-2022-11-26-002
- 当它完成时,现在将项目别名指向items-2022-11-26-002
POST _aliases
{
"actions": [
{
"remove": {
"index": "items-2022-11-26-001",
"alias": "items"
}
},
{
"add": {
"index": "items-2022-11-26-002",
"alias": "items"
}
}
]
}
- 删除项目-2022-11-26-001
你运行你所有的查询"item "作为索引的别名。
引用:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html