【发布时间】:2022-11-27 10:20:11
【问题描述】:
我想为高负载的基于弹性搜索的搜索系统实施现金。我想将现金存储在特殊的弹性索引中。问题出在缓存预热中:我的系统每小时需要用新结果更新一次缓存结果。
所以,我正在创建一个新的空索引并用更新的结果填充它,然后我需要交换旧索引和新索引,以便用户可以使用新的缓存结果。
问题是:如何有效地交换两个弹性搜索索引?
【问题讨论】:
标签: python elasticsearch full-text-search
我想为高负载的基于弹性搜索的搜索系统实施现金。我想将现金存储在特殊的弹性索引中。问题出在缓存预热中:我的系统每小时需要用新结果更新一次缓存结果。
所以,我正在创建一个新的空索引并用更新的结果填充它,然后我需要交换旧索引和新索引,以便用户可以使用新的缓存结果。
问题是:如何有效地交换两个弹性搜索索引?
【问题讨论】:
标签: python elasticsearch full-text-search
对于这种情况,您可以使用称为“索引别名交换”的东西。
您有一个指向当前索引的别名,用新记录填充一个新索引,然后将该别名指向新索引。
是这样的:
POST _aliases
{
"actions": [
{
"add": {
"index": "items-2022-11-26-001",
"alias": "items"
}
}
]
}
POST _aliases
{
"actions": [
{
"remove": {
"index": "items-2022-11-26-001",
"alias": "items"
}
},
{
"add": {
"index": "items-2022-11-26-002",
"alias": "items"
}
}
]
}
您针对将充当索引的“项目”别名运行所有查询。
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
【讨论】: