ES調研筆記

寫入過程:寫入index buffer->每1秒鐘refresh到os cache->每30分鐘flush os cache中的數據到segment文件

每次寫入操作:都會寫入translog

每1秒鐘將index buffer寫入一個新的os cache中的segment一次,清空buffer這個操作叫refresh

可以手動refresh將內存中的數據刷到os cache

而flush是將os cache中的數據寫入文件。

每次寫操作都會記入translog文件,而translog文件是不斷變大的,當大到一定閾值時或每30分鐘,會commit一次,寫一次commit point文件,並將os cache中緩存中的數據衝到磁盤文件中,並清空translog文件。

每次flush:

1、寫commit point

2、將os cache數據強衝到磁盤

3、清空translog日誌文件

 

Es重啓會自動讀取translog日誌文件自動恢復到內存中

 

當segment file多到一定程度後

Es會觸發merge操作,將多個segment file合併到一個文件中

 

刪除:將某條數據的標示寫入到.del文件中,標示已被刪除

 

ES搜索過程

1、協調節點發送搜索指令給每個有shard的節點

2、每個節點返回查到的doc id和排序字段

3、協調節點再排序,再拿doc ids到各個shard中讀取數據

 

一般用ES+Hbase方案或ES+MySQL方案

Es中寫入需要用來查詢的字段,Hbase中存入所有字段

 

es中的數據量建議小於等於filesystem cache的容量

filesystem cache調整爲32G,則建議es中的數據只保存32g

 

方案:

1、減少數據量,只寫入需要用來檢索的字段

2、es中的數據量小於等於filesystem cache的容量

 

做好數據預熱過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章