摘要:如或者接口接口用于根據(jù)一系列條件將別名指向一個(gè)新的索引,這些條件包括存續(xù)時(shí)間文檔數(shù)量和存儲(chǔ)容量等。但這種別名滾動(dòng)并不會(huì)自動(dòng)完成,需要主動(dòng)調(diào)用接口。
別名,有點(diǎn)類似數(shù)據(jù)庫的視圖,別名一般都會(huì)和一些過濾條件相結(jié)合,可以做到即使是同一個(gè)索引上,讓不同人看到不同的數(shù)據(jù)。別名的訪問接口是_alias。
PUT test_index_v1{ "aliases": { "test_index": {} }}
put test_index_v2put test_index_v2/_alias/test_index2
GET _alias{ "test_index_v1" : { "aliases" : { "test_index" : { } } }, "test_index_v2" : { "aliases" : { "test_index2" : { } } }}GET _cat/aliases?valias index filter routing.index routing.search is_write_index.kibana_task_manager .kibana_task_manager_1 - - - -.kibana .kibana_1 - - - -test_index test_index_v1 - - - -test_index2 test_index_v2 - - - -
GET test_index_v1/_alias{ "test_index_v1" : { "aliases" : { "test_index" : { } } }}
delete test_index_v2/_alias/test_index2
別名的使用和索引差不多,比如:
put study_route/_alias/srget sr/_search
同時(shí)_aliases接口可以做批量操作,比如通過_aliases接口將一個(gè)別名關(guān)聯(lián)多個(gè)索引:
POST _aliases{ "actions": [ { "add": { "index": "logs-nginx.access-prod", "alias": "logs" } } ]}
index
and indices
參數(shù)還支持通配符*:
POST _aliases{ "actions": [ { "add": { "index": "logs-*", "alias": "logs" } } ]}
或者對(duì)于同一個(gè)index,我們給不同人看到不同的數(shù)據(jù),如my_index有個(gè)字段是team,team字段記錄了該數(shù)據(jù)是那個(gè)team 的。team之間的數(shù)據(jù)是不可見的。
POST /_aliases{ "actions": [ { "add": { "index": "my_index", "alias": "my_index_teamA_alias", "filter": { "term": { "team": "teamA" } } } }, { "add": { "index": "my_index", "alias": "my_index_teamB_alias", "filter": { "term": { "team": "teamB" } } } }, { "add": { "index": "my_index", "alias": "my_index_team_alias" } } ]}
只要有可能,盡量使用別名,推薦為Elasticsearch的每個(gè)索引都使用別名,因?yàn)樵谖磥碇亟ㄋ饕臅r(shí)候,別名會(huì)賦予你更多的靈活性。假設(shè)一開始創(chuàng)建的索引只有一個(gè)主分片,之后你又決定為索引擴(kuò)容。如果為原有的索引使用的是別名,現(xiàn)在你可以修改別名讓其指向額外創(chuàng)建的新索引,而無須修改被搜索的索引之名稱(假設(shè)一開始你就為搜索使用了別名)。
另一個(gè)有用的特性是,在不同的索引中創(chuàng)建窗口。比如,如果為數(shù)據(jù)創(chuàng)建了每日索引,你可能期望一個(gè)滑動(dòng)窗口涵蓋過去一周的數(shù)據(jù),別名就稱為last7days。然后,每天創(chuàng)建新的每日索引時(shí),你可以將其加入別名,同時(shí)停用或者刪除第8天前的舊索引。
別名還能提供另一個(gè)特性,那就是路由。假設(shè)別名指向一個(gè)多帶帶的索引,那么它們也可以和路由一起使用,在查詢或索引
的時(shí)候自動(dòng)地使用路由值。如:
POST /_aliases{ "actions": [ { "add": { "index": "test_index", "alias": "my_index_alias", "filter": { "match": { "lang": "Java" } }, "routing": "AKey" } }, { "add": { "index": "test_index", "alias": "my_index_alias2", "filter": { "match": { "lang": "Java" } }, "routing": "BKey" } } ]}
或者:
PUT test_index/_alias/ts{ "filter": { "match": { "lang": "Java" } }, "routing": "CKey"}
_rollover接口用于根據(jù)一系列條件將別名指向一個(gè)新的索引,這些條件包括存續(xù)時(shí)間、文檔數(shù)量和存儲(chǔ)容量等。這與日志文件使用的文件滾動(dòng)類似,文件滾動(dòng)是通過不斷創(chuàng)建新文件并滾動(dòng)舊文件來保證日志文件不會(huì)過于龐大,而_rollover接口則是通過不斷將別名指向新的索引以保證索引容量不會(huì)過大。但這種別名滾動(dòng)并不會(huì)自動(dòng)完成,需要主動(dòng)調(diào)用_rollover接口。
別名滾動(dòng)的條件可通過conditions參數(shù)設(shè)置,包括max_age、max_docs和max_size等三個(gè)子參數(shù)。
例如,創(chuàng)建一個(gè)索引logs-1并分配別名logs:
PUT logs-1{ "aliases": { "logs": {} }}
然后調(diào)用logs別名的_rollover接口設(shè)置別名滾動(dòng)條件,如:
POST /logs/_rollover{ "conditions": { "max_age": "10s", "max_docs": 10000, "max_size": "4gb" }}{ "acknowledged" : true, "shards_acknowledged" : true, "old_index" : "logs-1", "new_index" : "logs-000002", "rolled_over" : true, "dry_run" : false, "conditions" : { "[max_size: 4gb]" : false, "[max_age: 10s]" : true, "[max_docs: 10000]" : false }}
在示例中,logs別名指向logs-1索引,最大存活周期為10s,最大文檔數(shù)量10000條,最大存儲(chǔ)容量4GB。為了演示效果,特意將最大存活周期設(shè)置為10秒,從返回結(jié)果的conditions屬性來看,max_age這個(gè)條件返回true,所以會(huì)觸發(fā)索引滾動(dòng)。
通過_cat/indices
接口就會(huì)發(fā)現(xiàn)有新的索引logs-000002產(chǎn)生:
get _cat/indices?vhealth status index uuid pri rep docs.count docs.deleted store.size pri.store.sizeyellow open logs-1 jjNxkUn1T1yD245qUH6SVQ 1 1 0 0 283b 283byellow open logs-000002 H85Y0qwQRnucttIc53t8CQ 1 1 0 0 230b 230b
再來看看別名:
get _cat/aliases?valias index filter routing.index routing.search is_write_indexlogs logs-000002 - - - -
logs-1的別名已經(jīng)被清空,而logs-000002的別名中則已經(jīng)添加了logs。新索引的命名規(guī)則在原索引名稱數(shù)字的基礎(chǔ)上加 1,并且將數(shù)值長度補(bǔ)0湊足6位。所以使用_rollover接口時(shí),要求索引名稱必須以數(shù)字結(jié)尾,數(shù)字與前綴之間使用連接線“-”連接。
由于_rollover接口在滾動(dòng)新索引時(shí),會(huì)將別名與原索引的關(guān)聯(lián)取消,所以通過別名再想查找原文檔就不可能了。為了保證原文檔可檢索,可以通過別名is_write_index參數(shù)保留索引與別名的關(guān)系。當(dāng)使用is_write_index參數(shù)設(shè)置了哪一個(gè)索引為寫索引時(shí),_rollover接口滾動(dòng)別名指向索引時(shí)將不會(huì)取消別名與原索引之間的關(guān)系。它會(huì)將原索引的is_write_index參數(shù)設(shè)置為false,并將新索引的is_write_index參數(shù)設(shè)置為true。
例如在創(chuàng)建logs-4時(shí)指定參數(shù)is_write_index為true:
PUT /logs-4{ "aliases": { "logs4": { "is_write_index": true } }}
然后調(diào)用_rollover接口:
POST logs4/_rollover{ "conditions": { "max_age": "10s", "max_docs": 10000, "max_size": "4gb" }}{ "acknowledged" : true, "shards_acknowledged" : true, "old_index" : "logs-4", "new_index" : "logs-000005", "rolled_over" : true, "dry_run" : false, "conditions" : { "[max_size: 4gb]" : false, "[max_age: 10s]" : true, "[max_docs: 10000]" : false }}
然后查詢索引的別名:
GET _cat/aliases?valias index filter routing.index routing.search is_write_indexlogs4 logs-4 - - - falselogs4 logs-000005 - - - t
會(huì)發(fā)現(xiàn)logs-4的is_write_index參數(shù)被設(shè)置為false,而新生成索引logs-000005的is_write_index參數(shù)則為true。在兩者的別名列表中都包含有l(wèi)ogs4,可以繼續(xù)通過logs別名對(duì)原索引進(jìn)行查詢。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/125636.html
閱讀 3792·2023-01-11 11:02
閱讀 4299·2023-01-11 11:02
閱讀 3121·2023-01-11 11:02
閱讀 5231·2023-01-11 11:02
閱讀 4793·2023-01-11 11:02
閱讀 5568·2023-01-11 11:02
閱讀 5371·2023-01-11 11:02
閱讀 4070·2023-01-11 11:02