Elasticsearch Indices APIs 索引別名

翻譯自官網(wǎng), 水平有限,用于自查。轉(zhuǎn)載請注明網(wǎng)址: http://www.itdecent.cn/p/2fcd45128405

索引別名

Elasticsearch的api在處理指定索引時接受索引名稱, 并可能接受多個索引。索引別名API允許為索引提供一個別名。 所有API自動將別名切換到實際的索引名稱。 一個別名可以映射到多個索引, 當(dāng)指定它時, 別名會自動擴展到別名索引。 一個別名也可以與一個過濾器相關(guān)聯(lián), 這個過濾器在搜索和路由的時候被自動應(yīng)用。 別名不能具有與索引相同的名稱。

這里有一個將別名alias1和索引test建立聯(lián)系的例子:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } }
    ]
}

移除這個別名:

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } }
    ]
}

重命名一個別名使用相同的API, 是一個簡單的刪除再添加的操作。 這是一個原子操作, 不需要擔(dān)心在一個短時間內(nèi)別名無法指向索引。

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

將一個別名和多個索引建立聯(lián)系,簡單地應(yīng)用多個add動作:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

多個索引可以通過一個帶有索引數(shù)組語法的操作指定:

POST /_aliases
{
    "actions" : [
        { "add" : { "indices" : ["test1", "test2"], "alias" : "alias1" } }
    ]
}

通過相應(yīng)的aliases數(shù)組語法, 可以在一個動作中指定多個別名。
對于上面的例子, 也可以使用glob pattern建立一個別名到多個索引的聯(lián)系 :

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test*", "alias" : "all_test_indices" } }
    ]
}

在這個例子中, 別名是一個時間點別名, 將對所有當(dāng)前匹配的索引進行分組, 當(dāng)匹配該模式的新索引被添加或刪除時, 它不會自動更新。

索引到一個指向多索引的別名是一個錯誤的操作。

可以在一個操作中用別名交換索引:

PUT test                   //1 
PUT test_2               //2
POST /_aliases
{
"actions" : [
{ "add": { "index": "test_2", "alias": "test" } },
{ "remove_index": { "index": "test" } }  //3
]
}
  1. 一個我們錯誤創(chuàng)建的索引
  2. 我們應(yīng)該添加的索引
  3. remove_index 同 Delete Index

過濾的別名

帶有過濾器的別名提供了創(chuàng)建相同索引不同“視圖”的簡便方法。 可以使用查詢DSL定義過濾器, 并將其應(yīng)用于所有搜索、計數(shù)、刪除查詢以及類似的使用別名的操作。

要建立一個過濾的別名, 首先我們要確定映射中的字段已存在:

PUT /test1
{
  "mappings": {
    "type1": {
      "properties": {
        "user" : {
          "type": "keyword"
        }
      }
    }
  }
}

現(xiàn)在我們可以使用一個user的過濾器來建立一個別名:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test1",
                 "alias" : "alias2",
                 "filter" : { "term" : { "user" : "kimchy" } }
            }
        }
    ]
}

路由

可以將路由和別名關(guān)聯(lián)起來。 這個特性可以與過濾的別名一起使用, 以避免不必要的分片操作。

如下命令建立一個新別名alias1, 指向索引test。 在alias1創(chuàng)建后, 所有對這個別名的操作自動修改為使用值 1 來路由:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "routing" : "1"
            }
        }
    ]
}

也可以對搜索和索引指定不同的路由:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias2",
                 "search_routing" : "1,2",
                 "index_routing" : "2"
            }
        }
    ]
}

如上例所示, 搜索路由可能包含多個逗號分隔的值。 索引路由只能包含一個單值。

如果一個搜索操作使用了路由別名并且有一個路由參數(shù), 則使用別名中搜索路由和參數(shù)指定的路由的交集。 例如, 以下命令將使用“2”作為路由值:

GET /alias2/_search?q=user:kimchy&routing=2,3

如果一個索引操作使用索引路由別名并且有一個父路由( parent routing ), 父路由會被忽略。

添加一個單獨的別名

一個別名也可以通過如下端點添加:

PUT /{index}/_alias/{name}

其中:

參數(shù) 含義
index 別名指向的索引, 可以是任意的:* | _all | glob pattern | name1, name2, …
name 別名的名稱, 這是必須得參數(shù)。
routing 可選的關(guān)聯(lián)別名的路由
filter 可選的關(guān)聯(lián)別名的過濾器

你也可以使用復(fù)數(shù)的_aliases。

例子:

增加基于時間的別名:

PUT /logs_201305/_alias/2013

增加基于用戶的別名:

先建立索引, 增加user_id字段的映射
PUT /users
{
    "mappings" : {
        "user" : {
            "properties" : {
                "user_id" : {"type" : "integer"}
            }
        }
    }
}

為指定的用戶添加別名
PUT /users/_alias/user_12
{
    "routing" : "12",
    "filter" : {
        "term" : {
            "user_id" : 12
        }
    }
}

索引建立過程中的別名

別名還可以在創(chuàng)建索引的過程中指定:

PUT /logs_20162801
{
    "mappings" : {
        "type" : {
            "properties" : {
                "year" : {"type" : "integer"}
            }
        }
    },
    "aliases" : {
        "current_day" : {},
        "2016" : {
            "filter" : {
                "term" : {"year" : 2016 }
            }
        }
    }
}

刪除別名

REST端點:http /{index}/_alias/{name}
其中:

參數(shù) 含義
index * | _all | glob pattern | name1, name2, …
name * | _all | glob pattern | name1, name2, …

或者可使用復(fù)數(shù)的別名:

DELETE /logs_20162801/_alias/current_day

獲取存在的別名

獲取索引別名的API支持通過別名名稱和索引名稱篩選。 該api重定向到主節(jié)點并獲取所有請求的索引別名, 如果其可用。 這個api只序列化被發(fā)現(xiàn)的索引別名。

可用選項:

參數(shù) 含義
index 用于獲取別名的索引名。部分名稱支持通配符, 也可以使用逗號分隔的多個索引名。也可以使用索引的別名
alias 響應(yīng)中返回的別名的名稱。 和index選項相同, 這個選項支持通配符且可以使用逗號分隔的多個別名名稱
ignore_unavailable 如果指定的索引名不存在, 設(shè)置為true會忽略這些索引。

REST端點:http /{index}/_alias/{alias}

例子

索引的所有別名:

GET /logs_20162801/_alias/*

響應(yīng):

{
 "logs_20162801" : {
   "aliases" : {
     "2016" : {
       "filter" : {
         "term" : {
           "year" : 2016
         }
       }
     }
   }
 }
}

所有名稱是2016的別名:

GET /_alias/2016

響應(yīng):

{
  "logs_20162801" : {
    "aliases" : {
      "2016" : {
        "filter" : {
          "term" : {
            "year" : 2016
          }
        }
      }
    }
  }
}

所有名稱由20開始的別名:

GET /_alias/20*

響應(yīng):

{
  "logs_20162801" : {
    "aliases" : {
      "2016" : {
        "filter" : {
          "term" : {
            "year" : 2016
          }
        }
      }
    }
  }
}

還有一個獲取索引別名api的頭部變體, 以檢查是否存在索引別名。 索引別名和獲取索引別名有著相同的選項。 例如:

HEAD /_alias/2016
HEAD /_alias/20*
HEAD /logs_20162801/_alias/*
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 刪除索引 用以下的請求來 刪除索引: 對一些人來說,能夠用單個命令來刪除所有數(shù)據(jù)可能會導(dǎo)致可怕的后果。如果你想要避...
    techhow閱讀 1,162評論 0 1
  • 支出:5 晚上停水,明天辦公室停電,停電干嘛上班嘛!電腦不能用,大家坐在辦公室干瞪眼嘛! 梅雨天要來了,抽濕器用起來哦!
    沒錯我就是那個帥小伙閱讀 232評論 1 0
  • 2017年11月15日追記: 11月11日在校長信箱發(fā)了一份《學(xué)生關(guān)于蘭州大學(xué)榆中校區(qū)應(yīng)急疏散等安全問題的幾個關(guān)心...
    魔法密林港閱讀 2,469評論 9 5

友情鏈接更多精彩內(nèi)容