Elasticsearch-索引別名

簡介

索引別名就是給一個或幾個索引重新定義一個名字,操作索引別名時會轉化爲對真實索引的操作,定義索引別名時不可以與真實的索引同名

通俗解釋:索引別名類似:windows的快捷方式,linux的軟鏈接,mysql的視圖

作用以及使用場景

索引別名允許我們執行以下操作:

  • 實現在正在運行的集羣上的一個索引和另一個索引之間透明切換
  • 對多個索引進行分組組合(例如:過去3個月的索引logs2019010,logs201911, logs_201912組合起來,索引別名爲logs)
  • 在索引中的文檔子集上創建“視圖”(結合業務場景,會提升檢索效率)

前提:Elasitcsearch創建索引後,索引名不允許修改。很多業務場景下單一索引可能無法滿足要求

  • 場景1:PB級別增量數據,藉助rollover api實現,由基於日期的n個索引組成,對外提供服務使用別名會很便捷
  • 場景2:線上提供服務的某個索引出了問題,使用索引別名實現無停機索引遷移

增加別名

給單個索引增加別名

PUT new_index

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "new_index",
        "alias": "new_index_alias"
      }
    }
  ]
}

# 查看
GET new_index/_alias

# 響應
{
  "new_index" : {
    "aliases" : {
      "new_index_alias" : { }
    }
  }
}

給多個索引增加別名

給多個索引增加相同的別名

方式一

PUT new_index

PUT new_index_2

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "new_index",
        "alias": "new_index_alias"
      }
    },
    {
      "add": {
        "index": "new_index_2",
        "alias": "new_index_alias"
      }
    }
  ]
}

方式二

POST /_aliases
{
  "actions": [
    {
      "add": {
        "indices": [
          "new_index",
          "new_index_2"
        ],
        "alias": "new_index_alias"
      }
    }
  ]
}

給多個索引增加不同的別名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "new_index",
        "alias": "new_index_alias"
      }
    },
    {
      "add": {
        "index": "new_index_2",
        "alias": "new_index_alias_2"
      }
    }
  ]
}

使用通配符增加別名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "new_index*",
        "alias": "new_index_alias22"
      }
    }
  ]
}

刪除別名

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "new_index",
        "alias": "new_index_alias"
      }
    },
    {
      "remove": {
        "index": "new_index_2",
        "alias": "new_index_alias"
      }
    }
  ]
}

修改別名

別名的修改,是通過同時執行刪除remove和新增add操作來實現的,該操作中的兩個動作都是原子性的

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "new_index",
        "alias": "new_index_alias1"
      }
    },
    {
      "add": {
        "index": "new_index",
        "alias": "new_index_alias"
      }
    }
  ]
}

查看別名

查看單個索引別名

GET new_index/_alias

# 響應
{
  "new_index" : {
    "aliases" : {
      "new_index_alias" : { }
    }
  }
}

查看多個索引別名

GET new_index,new_index_2/_alias

# 響應
{
  "new_index_2" : {
    "aliases" : {
      "new_index_alias1" : { },
      "new_index_alias22" : { },
      "new_index_alias_2" : { }
    }
  },
  "new_index" : {
    "aliases" : {
      "new_index_alias" : { }
    }
  }
}

使用通配符查看索引

GET new_index*/_alias

# 響應
{
  "new_index_2" : {
    "aliases" : {
      "new_index_alias1" : { },
      "new_index_alias22" : { },
      "new_index_alias_2" : { }
    }
  },
  "new_index" : {
    "aliases" : {
      "new_index_alias" : { }
    }
  }
}

判斷別名是否存在

HEAD new_index/_alias/new_index_alias

# 存在時響應
200 - OK

# 不存在時響應
404 - Not Found
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章