设置别名我认为最重要的用处就是用户可以无感知的重建索引。有是有我们的索引结构不可能设置的很完美,比如keyword类型可能要修改为ik分词、新增加一些字段等等。通常的做法是通过reindex来完成,但是如果数据量非常大,那么需要消耗很长的时间。为了不影响用户使用业务,可以通过设置别名来完成。
给my_index1
和my_index2
添加别名my_alias
:
POST /_aliases
{
"actions": [
{
"add": {
"index": "my_index1",
"alias": "my_alias"
}
},
{
"add": {
"index": "my_index2",
"alias": "my_alias"
}
},
]
}
这样查询的时候可以通过my_alias
查询两个index。GET my_alias/_search
需要注意的是,如果是要往别名中插入数据,则需要指定往哪个索引中写:
POST /_aliases
{
"actions": [
{
"add": {
"index": "my_index1",
"alias": "my_alias",
"is_write_index": true
}
},
{
"add": {
"index": "my_index2",
"alias": "my_alias",
"is_write_index": false
}
}
]
}
更新别名,将别名my_alias
从my_index1
和my_index2
中移除,添加到my_index3
中:
POST /_aliases
{
"actions": [
{
"remove": {
"index": "my_index1",
"alias": "my_alias"
}
},
{
"remove": {
"index": "my_index2",
"alias": "my_alias"
}
},
{
"add": {
"index": "my_index3",
"alias": "my_alias"
}
}
]
}