Elasticsearch Index Aliases詳解

微信公衆號:[中間件興趣圈]
做者簡介:《RocketMQ技術內幕》做者;java

index aliases,索引別名,有點相似名稱映射,一個索引別名能夠映射多個真實索引,索引別名在定義時還支持filter,構成同一個索引,不一樣的視圖。數據庫

思考:一個索引別名能夠映射成多個索引,那若是向一個別名添加一個文檔時,會在該別名下對應的全部索引下都建立一個文檔?api

如何建立索引別名

1POST /_aliases
2{
3    "actions" : [
4        { "remove" : { "index" : "test1", "alias" : "alias1" } },
5        { "add" : { "index" : "test2", "alias" : "alias1" } }
6    ]
7}

索引建立API,支持add、remove操做,當前Restfull java客戶端未封裝該方法。微信

爲索引建立別名,也能夠在建立索引API中指定:app

1PUT test
 2{
 3    "aliases" : {
 4        "alias_1" : {},
 5        "alias_2" : {
 6            "filter" : {
 7                "term" : {"user" : "kimchy" }
 8            },
 9            "routing" : "kimchy"
10        }
11    }
12}

Filtered Aliases

帶有過濾器的別名提供了建立相同索引的不一樣「視圖」的簡單方法。過濾器能夠使用查詢DSL定義,並應用於全部搜索、計數、按查詢刪除以及相似於此別名的操做。運維

其使用示例以下,假設存儲該索引:ide

1PUT /test1
 2{
 3  "mappings": {
 4    "_doc": {
 5      "properties": {
 6        "user" : {
 7          "type": "keyword"
 8        }
 9      }
10    }
11  }
12}

爲別名設置過濾器的使用方法以下:code

1POST /_aliases
 2{
 3    "actions" : [
 4        {
 5            "add" : {
 6                 "index" : "China_Provice_Index",
 7                 "alias" : "shanghai_index",
 8                 "filter" : { "term" : { "provice" : "shanghai" } }
 9            },
10   "add" : {
11                 "index" : "China_Provice_Index",
12                 "alias" : "guangzhou_index",
13                 "filter" : { "term" : { "provice" : "guangzhou" } }
14            }
15        }
16    ]
17}

經過爲China_Provice_Index(中國各省份人才數據庫索引)建立別名,shanghai_index、guangzhou_index,這樣從兩個別名進行數據查詢,只會查出各自省份的數據,是否是有點相似於」多租戶「,也即經過索引別名並指定過濾器,能爲同一個索引提供不一樣的視圖。中間件

Routing

在建立別名時能夠指定路由值。blog

1POST /_aliases
 2{
 3    "actions" : [
 4        {
 5            "add" : {
 6                 "index" : "test",
 7                 "alias" : "alias1",
 8                 "routing" : "1"
 9            }
10        }
11    ]
12}

使用別名alias1查詢內容時,會自動使用該值進行路由。

也能夠使用search_routing、index_routing分別來指定查詢、索引時的路由值,注意,index_routing只能指定一個值。

Write Index

若是一個別名只映射了一個真實索引,則能夠使用別名進行index api(即索引文檔,寫文檔),但若是一個別名同一時間映射了多個索引,默認是不能直接使用別名進行索引文檔,由於ES不知道文檔該發往哪一個索引。

能夠使用is_write_index屬性爲一個別名下的其中一個索引指定爲寫索引,此時則能夠直接使用別名進行index api的調用。例如:

1POST /_aliases
 2{
 3    "actions" : [
 4        {
 5            "add" : {
 6                 "index" : "test",
 7                 "alias" : "alias1",
 8                 "is_write_index" : true
 9            }
10        },
11        {
12            "add" : {
13                 "index" : "test2",
14                 "alias" : "alias1"
15            }
16        }
17    ]
18}

es index aliases,索引別名就介紹到這裏了。

更多文章請關注中間件興趣圈:
Elasticsearch Index Aliases詳解
做者新書《RocketMQ技術內幕》已成功上市。
Elasticsearch Index Aliases詳解《RocketMQ技術內幕》已出版上市,目前可在主流購物平臺(京東、天貓等)購買,本書從源碼角度深度分析了RocketMQ NameServer、消息發送、消息存儲、消息消費、消息過濾、主從同步HA、事務消息;在實戰篇重點介紹了RocketMQ運維管理界面與當前支持的39個運維命令;並在附錄部分羅列了RocketMQ幾乎全部的配置參數。本書獲得了RocketMQ創始人、阿里巴巴Messaging開源技術負責人、Linux OpenMessaging 主席的高度承認並做序推薦。目前是國內第一本成體系剖析RocketMQ的書籍。

相關文章
相關標籤/搜索