對應(yīng)7.13官方文檔路徑: Data management
官方地址如下:
https://www.elastic.co/guide/en/elasticsearch/reference/7.13/data-management.html
數(shù)據(jù)管理
存儲在 ES 中的數(shù)據(jù)大體分為兩種類型:
- 文本內(nèi)容:需要搜索的數(shù)據(jù)集合捷雕,例如產(chǎn)品列表
- 時間序列數(shù)據(jù):連續(xù)產(chǎn)生的帶有時間戳的數(shù)據(jù)流瘸彤,例如日志信息
文本內(nèi)容可能需要頻繁的更新撞蚕,但是文本內(nèi)容的價值隨時間的推移相對穩(wěn)定。你想要的是快速取回它們而不管它們是多么古老的數(shù)據(jù)垫卤。
時間序列數(shù)據(jù)隨時間推移逐漸累積,所以你需要設(shè)計策略來平衡數(shù)據(jù)價值和存儲成本出牧。隨著時間推移穴肘,古老的數(shù)據(jù)變得不那么重要且很少需要查詢它們,所以你可以將其轉(zhuǎn)移到便宜的性能較低的存儲介質(zhì)上舔痕。對于最古老的數(shù)據(jù)评抚,你仍可訪問它們,只是需要更長的時間來完成查詢伯复。
為了管理數(shù)據(jù)慨代,ES提供以下方式:
- 將節(jié)點根據(jù)性能劃分多個層級 - tiers
- 使用索引生命周期管理 - ILM 根據(jù)性能需求和保留策略在數(shù)據(jù)層之間自動轉(zhuǎn)移索引。
- 利用存儲在遠程存儲庫中的可搜索快照 - searchable snapshots為舊索引提供支持啸如,同時降低運營成本并保持搜索性能侍匙。
- 對存儲在性能較差的硬件上的數(shù)據(jù) 執(zhí)行異步搜索 - asynchronous searches。
1. 數(shù)據(jù)層級 Data tiers
數(shù)據(jù)層級是具備相同硬件配置的數(shù)據(jù)節(jié)點的集合:
- 文本內(nèi)容層:負責(zé)處理例如產(chǎn)品列表信息的索引和查詢组底。
- Hot層:負責(zé)處理時間序列數(shù)據(jù)例如日志或者指標信息的索引并保存最新丈积,最頻繁使用的數(shù)據(jù)。
- Warm層:負責(zé)保存訪問頻率較低且很少需要更新的時間序列數(shù)據(jù)债鸡。
- Cold層:負責(zé)保存不常訪問且通常不更新的時間序列數(shù)據(jù)江滨。
- Frozen層:節(jié)點保存很少訪問且從不更新的時間序列數(shù)據(jù),保存在可搜索的快照中厌均。
當(dāng)你將文檔直接索引到特定索引時唬滑,它們會無限期保留在文本內(nèi)容層節(jié)點上。
當(dāng)你將文檔索引到數(shù)據(jù)流時,它們最初駐留在Hot層節(jié)點上晶密。你可以配置索引生命周期管理策略(ILM)擒悬,根據(jù)你的性能、彈性和數(shù)據(jù)保留需求稻艰,在Hot層懂牧、Warm層和Cold層自動轉(zhuǎn)移時間序列數(shù)據(jù)。
數(shù)據(jù)節(jié)點的角色配置在elasticsearch.yml文件中尊勿。例如僧凤,集群中高性能節(jié)點可以同時設(shè)置為Hot層和文本內(nèi)容層:
node.roles: ["data_hot", "data_content"]
1.1 文本內(nèi)容層 Content tier
存儲在文本層的數(shù)據(jù)通常是產(chǎn)品目錄或文章檔案等項目的集合。與時間序列數(shù)據(jù)不同元扔,文本內(nèi)容的價值隨著時間的推移保持相對恒定躯保,因此隨著時間的推移將其移動到具有不同性能特征的層是沒有意義的。文本內(nèi)容數(shù)據(jù)通常具有較長的數(shù)據(jù)保留要求澎语,您希望能夠快速檢索項目途事,而不管它們有多老。
文本內(nèi)容層節(jié)點通常針對查詢性能進行優(yōu)化——它們優(yōu)先考慮處理能力而不是 IO 吞吐量擅羞,因此它們可以處理復(fù)雜的搜索和聚合并快速返回結(jié)果尸变。雖然它們也負責(zé)索引,但內(nèi)容數(shù)據(jù)的攝取速度通常不如時間序列數(shù)據(jù)(如日志和指標)高祟滴。從彈性的角度來看振惰,這一層中的索引應(yīng)配置為使用一個或多個副本。
文本內(nèi)容層是必需的垄懂。系統(tǒng)索引和其他不屬于數(shù)據(jù)流的索引會自動分配給內(nèi)容層骑晶。
1.2 Hot層
Hot層是時間序列數(shù)據(jù)的es入口點,保存你最近草慧、最常搜索的時間序列數(shù)據(jù)桶蛔。Hot層中的節(jié)點需要快速讀取和寫入,需要更多的硬件資源和更快的存儲(SSD)漫谷。為了彈性仔雷,Hot層中的索引應(yīng)配置一個或多個副本。
新建索引作為數(shù)據(jù)流一部分會自動分配到Hot層舔示。
1.3 Warm層
一旦查詢的頻率低于Hot層中最近索引的數(shù)據(jù)碟婆,時間序列數(shù)據(jù)就可以移動到Warm層。Warm層通常保存最近幾周的數(shù)據(jù)惕稻。仍然允許更新竖共,但可能很少。暖層中的節(jié)點通常不需要像熱層中的節(jié)點一樣快。為了彈性,應(yīng)將暖層中的索引配置一個或多個副本箕戳。
1.4 Cold層
一旦數(shù)據(jù)不再更新狮暑,它可以從Warm層移動到Cold層,在這里不經(jīng)常查詢救恨。Cold層仍然是響應(yīng)式查詢層陷揪,但數(shù)據(jù)通常不會更新王滤。隨著數(shù)據(jù)過渡到Cold層腿准,它可以被壓縮和縮小际起。對于彈性,Cold層可以使用可搜索快照的完全掛載索引释涛,省去了副本的需要加叁。
1.5 Frozen層
一旦數(shù)據(jù)不再被查詢,或者很少被查詢唇撬,它可能會從Cold層移動到Frozen層,在這里度過余生展融。
Frozen層使用可搜索快照的部分掛載來存儲和加載來自快照存儲庫的數(shù)據(jù)窖认。這降低了本地存儲和運營成本,同時仍可搜索Frozen的數(shù)據(jù)告希。因為 Elasticsearch 有時必須從快照存儲庫中獲取Frozen的數(shù)據(jù)扑浸,所以在Frozen層上的搜索通常比在Cold層上慢。
建議使用專用的Frozen層節(jié)點燕偶。
1.6 索引分配數(shù)據(jù)層
index.routing.allocation.include._tier_preference
es默認將你創(chuàng)建的index分配到文本內(nèi)容層喝噪,通過將上述參數(shù)設(shè)置為data_content;
es默認將你創(chuàng)建的data stream索引分配到Hot層指么,通過將上述參數(shù)設(shè)置為data_hot酝惧。
你可以通過在創(chuàng)建索引請求或與新索引匹配的索引模板中指定分片分配過濾設(shè)置來覆蓋自動基于層的分配。(即通過node.attr將節(jié)點分組伯诬,通過index.routing.allocation將索引分配到不同節(jié)點組)
你還可以明確設(shè)置index.routing.allocation.include._tier_preference為null退出默認的基于層的分配晚唇,這樣es在分配期間會忽略數(shù)據(jù)層角色。
1.7 層間自動遷移數(shù)據(jù)
ILM 使用migrate自動遷移托管索引到不同層級盗似。默認情況下哩陕,此操作會在每個階段自動注入。您可以明確指定遷移操作來覆蓋默認migrate行為赫舒,或使用allocate操作手動指定分配規(guī)則悍及。
2. 索引管理
Kibana 的索引管理功能可以簡單,方便的管理集群的索引接癌、數(shù)據(jù)流和
索引模板心赶。進行良好的索引管理可以確保你的數(shù)據(jù)以最具成本效益的方式正確的存儲。
2.1 你將學(xué)到什么
- 查看編輯索引 settings
- 查看索引 mappings 和統(tǒng)計信息
- 進行索引層面操作扔涧,例如 refresh 和 freeze
- 查看和管理數(shù)據(jù)流
- 創(chuàng)建索引模板用以自動配置新的數(shù)據(jù)流和索引
2.2 需要的權(quán)限
如果你使用了 ES 的 Security 功能园担,你需要具備一下權(quán)限:
- 集群的
monitor
權(quán)限用以訪問 Kibana 的索引管理模塊 -
view_index_metadata
和manage
索引權(quán)限用以查看索引或者數(shù)據(jù)流的數(shù)據(jù) -
manage_index_templates
用以管理索引模板
2.3 查看和編輯索引
此模塊位于 Kibana 的 Stack Management ? Index Management
如上圖所示:索引管理頁面包含索引列表以及每個索引的統(tǒng)計信息届谈,在索引名后會標記出索引的狀態(tài),如 frozen弯汰,rollup 等艰山。
點擊索引名稱會打開具體索引的管理界面,在這里可以查看索引的詳細統(tǒng)計信息咏闪、Settings 和 Mappings曙搬,也可以進行索引 Settings 修改,如下圖所示:
2.4 進行索引級別的操作
在圖1中選中索引或者進入圖2可以看到Manage功能按鍵鸽嫂,用以執(zhí)行索引相關(guān)操作纵装,操作和 ES REST 操作基本一致,如下:
- 關(guān)閉索引
- Force merge 索引
- Refresh 索引
- Flush 索引
- Freeze 索引
- Delete 索引
- 設(shè)置 ILM
......
2.5 管理數(shù)據(jù)流
Data Streams 頁面展示了你的數(shù)據(jù)流并允許你檢查或刪除他們据某。
要查看有關(guān)數(shù)據(jù)流的更多信息橡娄,例如其生成狀況或其當(dāng)前索引生命周期策略,請點擊數(shù)據(jù)流的名稱癣籽,如下圖所示:
可以在 Indices 頁面查看有關(guān)數(shù)據(jù)流后的真是索引信息挽唉,如下圖所示:
2.6 管理索引模板
索引模板頁面展示了你的模板并允許你檢查,編輯筷狼,復(fù)制或刪除他們瓶籽,對模板的更改不會影響現(xiàn)存的索引,頁面如下圖所示:
你可以通過 Create template 功能創(chuàng)建模板埂材,以下教程為創(chuàng)建模板并通過它配置兩個新索引:
Step 1. 設(shè)置 name 和索引匹配模式
- 打開 Create template 功能模塊塑顺,如下圖所示:
Create template 模塊 - 在Name位置輸入模板名字。
- 在Index pattern位置設(shè)置要匹配的索引匹配模式俏险,my-index-* 表示模板將應(yīng)用于以 my-index- 開頭的索引严拒。
- 其他配置保持默認,點擊Next寡喝。
Step 2. 設(shè)置 Settings糙俗,Mappings 和別名
-
按需添加預(yù)置組件模板
組件模板是預(yù)配置的一組 Settings、Mappings 和別名预鬓,您可以在多個索引模板中重復(fù)使用巧骚。名稱后的標記表示組件模板是否包含映射 ( M )、索引設(shè)置 ( S )格二、別名 ( A ) 或三者的組合劈彪。
預(yù)置組件模板
組件模板是可選的。對于本教程顶猜,不要添加任何組件模板沧奴,直接Next。
- 設(shè)置索引 Settings (選填)长窄。對于本教程滔吠,此部分留空纲菌。
- 設(shè)置索引 Mappings:包含一個 Object 類型字段 geo 并為其設(shè)置一個 Geo-point 類型子字段 coordinates。
Mappings 設(shè)置
你也可以通過 Load JSON 功能將已有 JSON 信息導(dǎo)入為 Mappings疮绷。
上述字段 JSON 信息如下:
你也可以在 Dynamic templates 和 Advanced options 中創(chuàng)建其他 Mapping 配置翰舌,對于本教程,不要創(chuàng)建任何其他映射冬骚。{ "properties": { "geo": { "properties": { "coordinates": { "type": "geo_point" } } } } }
-
定義一個索引別名為 my-index椅贱,如下圖所示:
設(shè)置別名 - Review 頁面進行配置檢查,檢查無誤后點擊 Create template只冻。
Step 3. 創(chuàng)建索引
你現(xiàn)在可以使用上面配置的模板創(chuàng)建新索引庇麦。
- 加載一下文檔來創(chuàng)建兩個新索引。
POST /my-index-000001/_doc { "@timestamp": "2019-05-18T15:57:27.541Z", "ip": "225.44.217.191", "extension": "jpg", "response": "200", "geo": { "coordinates": { "lat": 38.53146222, "lon": -121.7864906 } }, "url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg" } POST /my-index-000002/_doc { "@timestamp": "2019-05-20T03:44:20.844Z", "ip": "198.247.165.49", "extension": "php", "response": "200", "geo": { "coordinates": { "lat": 37.13189556, "lon": -76.4929875 } }, "memory": 241720, "url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile" }
- 通過 get index API 查看新索引的配置喜德,為之前模板設(shè)置的配置山橄。
GET /my-index-000001,my-index-000002