Elasticsearch之別名


別名解決的問題

  在運行的集群中可以從一個索引切換到另一個索引

  可以給多個索引進行分組

  可以與路由搭配使用

別名的相關操作

准備數據階段

復制代碼
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

 

 

轉自:https://www.cnblogs.com/Alexephor/p/11413722.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM