別名解決的問題
在運行的集群中可以從一個索引切換到另一個索引
可以給多個索引進行分組
可以與路由搭配使用
別名的相關操作
准備數據階段
PUT l1/doc/1
{
"title":"我想要睡你"
}
PUT l2/doc/1
{
"title":"你卻拿我當兄弟"
}
PUT l3/doc/1
{
"title":"不過,我不介意"
}
創建別名 給l1索引創建別名a1(_aliases actions add)
POST _aliases
{
"actions": [
{
"add": {
"index": "l1",
"alias": "a1"
}
}
]
}
查看別名
GET l1/_alias
查看結果
{
"l1" : {
"aliases" : {
"a1" : { }
}
}
}
刪除別名(actions remove)
POST _aliases
{
"actions": [
{
"remove": {
"index": "l1",
"alias": "a1"
}
}
]
}
重命名別名(淘汰舊的索引上的別名,生成新的索引上的別名)
POST _aliases
{
"actions": [
{
"remove": {
"index": "l1",
"alias": "a1"
}
},
{
"add": {
"index": "l2",
"alias": "a1"
}
}
]
}
為多個索引指向同樣的別名(證實為多個索引分組)
POST _aliases
{
"actions": [
{"add": {"index": "l1", "alias": "a1"}},
{"add": {"index": "l2", "alias": "a1"}},
{"add": {"index": "l3", "alias": "a1"}}
]
}
使用indeices數組語法在一個操作中為多個索引指向別名
多個索引指向同一別名
POST _aliases
{
"actions": [
{"add": {"indices": ["l1", "l2", "l3"], "alias": "a2"}}
]
}
一個索引指向多個別名
POST _aliases
{
"actions": [
{"add": {"index": "l1", "aliases": ["a1", "a2", "a3"]}}
]
}
將別名關聯到擁有公共名稱的索引(將索引 l1 l2 l3指向f1別名)
POST _aliases
{
"actions": [
{"add": {"index": "l*", "alias": "f1"}}
]
}
別名交換
POST _aliases
{
"actions": [
{"add": {"index": "l1", "alias": "a1"}},
{"remove_index":{"index":"a1"}}
]
}
# 就像刪除a1別名
過濾器別名
1.自定義索引
2.插入數據
3.普通查詢和根據別名查詢
PUT l4
{
"mappings": {
"doc":{
"properties":{
"year":{
"type":"integer"
},
"method":{
"type":"keyword"
}
}
}
}
}
PUT l4/doc/1
{
"year":2019,
"method":"GET"
}
PUT l4/doc/2
{
"year":2018,
"method":"POST"
}
PUT l4/doc/3
{
"year":2019,
"method":"POST"
}
POST _aliases
{
"actions": [
{
"add": {
"index": "l4",
"alias": "a4",
"filter": {
"term": {
"year": 2019
}
}
}
}
]
}
GET l4/doc/_search
GET a4/doc/_search
此時兩種查詢結果不同(帶有過濾的只返回2019,而普通查詢會全部返回)
與路由連用
簡單實例
POST _aliases
{
"actions": [
{
"add": {
"index": "l4",
"alias": "a4",
"routing": "2"
}
}
]
}
再列舉一個
POST _aliases
{
"actions": [
{
"add": {
"index": "l4",
"alias": "a4",
"search_routing": "1,2",
"index_routing": "1"
}
}
]
}
GET a4/doc/_search?q=year:2019&routing=2 # 取交集2
寫索引(如果多個索引指向一個別名,通過別名寫索引,不指定es不知道)
POST _aliases
{
"actions": [
{
"add": {
"index": "l1",
"alias": "a1",
"is_write_index": true
}
},
{
"add": {
"index": "l2",
"alias": "a1"
}
}
]
}
添加單個別名
PUT {index}/_alias/{name}
PUT {index}/_alias/{name}?routing=user1
- index,要為哪個索引添加別名。
- name,別名的名稱。
- routing,可以與別名關聯的路由。
刪除別名
DELETE l1/_alias/a1 DELETE l2/_aliases/a*
檢索現有別名
GET l1/_alias/a* # 查詢索引l1指向以a開頭的所有別名 GET l1/_alias/* # 查詢索引l1所有的別名
查詢所有別名是a1
GET /_alias/a1
HEAD檢測別名是否存在
GET _cat/aliases
HEAD _alias/a1

