介紹
顧名思義 就是為索引起一個(gè) 外號(hào)癌刽,一個(gè)別名 可以對(duì)應(yīng) 多個(gè)索引圃泡;一個(gè)索引也可以對(duì)應(yīng)多個(gè)別名后添。
場(chǎng)景很多
比如 order_202201,order_202202,order_202203 索引 起個(gè)別名 order愤钾,這樣好處就是 可以關(guān)閉歷史索引触创,加快查詢數(shù)據(jù)坎藐。
比如 需求變更 導(dǎo)致 索引 mappings 調(diào)整,mappings 變更 添加還好,如果 更新 就必須刪除索引重來(lái)岩馍,同步數(shù)據(jù) (數(shù)據(jù)量較大) 耗時(shí)碉咆,如果刪除 索引重建 會(huì)導(dǎo)致 上一個(gè)版本 服務(wù)暫時(shí)不可用。這個(gè)時(shí)候 如果使用 別名 就可以 無(wú)感知切換蛀恩,索引重建到另一個(gè)索引上面疫铜,索引重建完成后 發(fā)布版本完成 在通過別名切換。這樣就可以省去 同步 es 時(shí)候的 服務(wù)不可用問題双谆。
新增
# 方法1
post 192.168.1.139:9200/_aliases
{
"actions":[
{
"add":{
"index":"test1",
"alias":"alias_11"
}
}
]
}
# 方法2
PUT /test1/_alias/alias_11
刪除
# 方法1
POST /_aliases
{
"actions": [{
"remove": {
"index": "test1",
"alias": "alias_11"
}
}]
}
# 方法2
DELETE /test1/_alias/alias_11
重命名
POST /_aliases
{
"actions": [{
"remove": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test1",
"alias": "alias_12"
}
}
]
}
多個(gè)索引指定同一個(gè)別名
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test2",
"alias": "alias_11"
}
}
]
}
同一個(gè)索引指定多個(gè)別名
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test1",
"alias": "alias_12"
}
}
]
}
查詢索引
# 當(dāng)別名指定了?個(gè)索引壳咕,則查出?個(gè)索引
GET /alias_11
# 當(dāng)別名指定了多個(gè)索引,則查出多個(gè)索引
GET /alias_12
通過別名添加文檔
#當(dāng)別名只指定了?個(gè)索引顽馋,則可以做寫的操作
POST /alias_12/_doc/566
{
"title":"標(biāo)題11",
"type":1
}
# 當(dāng)別名指定了多個(gè)索引谓厘,則需要指定寫某個(gè)索引
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11",
"is_write_index": true// test1這個(gè)索引可以寫,設(shè)置之后寸谜,通過別名寫操作庞呕,則會(huì)寫進(jìn)test1這個(gè)索引里
}
},
{
"add": {
"index": "test2",
"alias": "alias_11"
}
}
]
}
查詢文檔方法都一樣,別名和索引都是一樣
同一別名的兩個(gè)索引的字段不一樣程帕,但是內(nèi)容一樣住练,如都包含了‘標(biāo)題’,則兩個(gè)索引的數(shù)據(jù)都可以查出來(lái)