https://www.elastic.co/guide/cn/elasticsearch/guide/current/index-aliases.html
索引 别名 就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:
- 在运行的集群中可以无缝的从一个索引切换到另一个索引
- 给多个索引分组 (例如,
last_three_months)
- 给索引的一个子集创建
视图
有两种方式管理别名: _alias 用于单个操作, _aliases 用于执行多个原子级操作。
首先,创建索引 my_index_v1 ,然后将别名 my_index 指向它:
PUT /my_index_v1
PUT /my_index_v1/_alias/my_index
你可以检测这个别名指向哪一个索引:
或哪些别名指向这个索引:
GET /my_index_v1/_alias/*
两者都会返回下面的结果:
{
"my_index_v1" : {
"aliases" : {
"my_index" : { }
}
}
}
我们用新映射创建索引 my_index_v2 :
PUT /my_index_v2
{
"mappings": {
"my_type": {
"properties": {
"tags": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
然后我们将数据从 my_index_v1 索引到 my_index_v2 .
迁移工具
https://github.com/medcl/esm
https://github.com/elasticsearch-dump/elasticsearch-dump
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html
一个别名可以指向多个索引,所以我们在添加别名到新索引的同时必须从旧的索引中删除它。这个操作需要原子化,这意味着我们需要使用 _aliases 操作:
POST /_aliases
{
"actions": [
{ "remove": { "index": "my_index_v1", "alias": "my_index" }},
{ "add": { "index": "my_index_v2", "alias": "my_index" }}
]
}
你的应用已经在零停机的情况下从旧索引迁移到新索引了。
索引 别名 就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:
last_three_months)视图有两种方式管理别名:
_alias用于单个操作,_aliases用于执行多个原子级操作。首先,创建索引
my_index_v1,然后将别名my_index指向它:你可以检测这个别名指向哪一个索引:
或哪些别名指向这个索引:
两者都会返回下面的结果:
我们用新映射创建索引
my_index_v2:然后我们将数据从
my_index_v1索引到my_index_v2.一个别名可以指向多个索引,所以我们在添加别名到新索引的同时必须从旧的索引中删除它。这个操作需要原子化,这意味着我们需要使用
_aliases操作:你的应用已经在零停机的情况下从旧索引迁移到新索引了。