微信公衆號:[中間件興趣圈]
做者簡介:《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}
帶有過濾器的別名提供了建立相同索引的不一樣「視圖」的簡單方法。過濾器能夠使用查詢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,這樣從兩個別名進行數據查詢,只會查出各自省份的數據,是否是有點相似於」多租戶「,也即經過索引別名並指定過濾器,能爲同一個索引提供不一樣的視圖。中間件
在建立別名時能夠指定路由值。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只能指定一個值。
若是一個別名只映射了一個真實索引,則能夠使用別名進行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,索引別名就介紹到這裏了。
更多文章請關注中間件興趣圈:
做者新書《RocketMQ技術內幕》已成功上市。《RocketMQ技術內幕》已出版上市,目前可在主流購物平臺(京東、天貓等)購買,本書從源碼角度深度分析了RocketMQ NameServer、消息發送、消息存儲、消息消費、消息過濾、主從同步HA、事務消息;在實戰篇重點介紹了RocketMQ運維管理界面與當前支持的39個運維命令;並在附錄部分羅列了RocketMQ幾乎全部的配置參數。本書獲得了RocketMQ創始人、阿里巴巴Messaging開源技術負責人、Linux OpenMessaging 主席的高度承認並做序推薦。目前是國內第一本成體系剖析RocketMQ的書籍。