如何交换两个elsticsearch索引



我想为高负载的基于elasticsearch的搜索系统实现现金。我想把现金存入特殊弹性指数。问题是在缓存预热:每小时我的系统需要用新的结果更新缓存的结果。

所以,我创建了一个新的空索引,并用更新的结果填充它,然后我需要交换旧索引和新索引,这样用户就可以使用新的缓存结果。

问题是:如何有效地交换两个elasticsearch索引

?

对于这种情况,您可以使用"索引别名">

。你有一个别名指向你当前的索引,你用新的记录填充一个新的索引,然后你把这个别名指向新的索引。

像这样:

  1. 当前索引名称为items-2022-11-26-001
  2. 创建别名项指向项目-2022-11-26-001
POST _aliases
{
"actions": [
{
"add": {
"index": "items-2022-11-26-001",
"alias": "items"
}
}
]
}
  1. 用新的数据项创建新的索引-2022-11-26-002
  2. 当它完成时,现在将项目别名指向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"
}
}
]
}
  1. 删除项目-2022-11-26-001

你运行你所有的查询"item "作为索引的别名。

引用:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html

最新更新