91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Elasticsearch寫入數據底層的示例分析

發布時間:2021-12-03 14:53:55 來源:億速云 閱讀:169 作者:柒染 欄目:云計算

這篇文章給大家介紹Elasticsearch寫入數據底層的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

名詞解釋

  • Document(文檔): 文檔是存儲在elasticsearch中的一個JSON文件,相當于關系數據庫中表的一行數據。

  • Shard(分片):索引數據可以拆分為較小的分片,每個分片放到不同的服務器上,提高并發能力。 Lucene 中的 Lucene index 相當于 ES 的一個 shard。

  • Segments(段): 分片由多個segments組成,每個segments都是一個獨立的倒排索引,且具有不變性,segment 提供了搜索功能。

  • Transaction Log(translog,事務日志):Elasticsearch使用translog來記錄index,delete,update,bulk請求,保障數據不丟失,如果Elasticsearch需要恢復數據可以從translog中讀取。每個分片對應一個translog文件。

  • Commit point(提交點):記錄著所有已知的segment,每個Shard都有一個Commit point, 其中保存了當前Shard成功寫入磁盤的所有Segment。

  • Lucene index :由一堆 Segment 的集合加上一個Commit point組成。

內存分配

  • OS Cache: Lucene 中的倒排索引 segments 存儲在文件中,為提高訪問速度,都會把它加載到OS Cache中,從而提高 Lucene 性能,所以建議至少留系統一半內存給Lucene。

  • Node Query Cache:負責緩存filter 查詢結果,每個節點有一個,被所有 shard 共享,filter query查詢結果不涉及 scores 的計算。

  • Indexing Buffe:索引緩沖區,用于存儲新索引的文檔,當其被填滿時,緩沖區中的文檔被寫入磁盤中的 segments 中。

  • Shard Request Cache: 用于緩存aggregations,suggestions,hits.total的請求結果。

  • Field Data Cache:Elasticsearch 加載內存 fielddata 的默認行為是延遲加載 。在首次對text類型字段做聚合、排序或者在腳本中使用時,需要設置字段為fielddata數據結構,它將會完整加載這個字段所有 Segment 中的倒排索引到堆內存中。不推薦使用,因為fielddata會占用大量堆內存空間 ,聚合或者排序使用doc_value。

寫入流程--數據底層

Elasticsearch寫入數據底層的示例分析

  • 1.數據寫入Index Buffer緩沖和Translog日志文件。

    • 為了保證數據不會丟失,從高版本開始Transaction Log對每個index,delete,update,bulk請求都fsync持久化到磁盤。

  • 2.Refresh:將Index Buffer寫入Segment的過程叫做Refresh。

    • 每隔1s,Index Buffer中的數據被寫入新的Segment(OS Cache中),此時Segment被打開并提供Search。Refresh后,數據就可以被搜索到了,這也是為什么Elasticsearch被稱為近實時搜索的原因。

    • 當Index Buffer被占滿時,會觸發Refresh,默認值是JVM堆內存的10%。

    • Refresh不執行fsync操作,不會清空Transaction Log。

  • 3.重復1~2步,新的Segment不斷添加,Index Buffer不斷被清空,而Transaction Log中的數據不斷累加。

  • 4.每隔30分鐘或者當Transaction Log用滿時(默認512M),ES Flush (Lucene Commit) 操作發生:

    • 4.1 調用Refresh清空Index Buffer。

    • 4.2 調用fsync,將緩存中的Segments寫入磁盤。

    • 4.3 清空(刪除)Transaction Log。

    • 4.4 Commit ponit被寫入磁盤,每個Shard都有一個Commit point, 其中保存了當前Shard成功寫入磁盤的所有Segment。

參數說明

Refresh

PUT my-index/_settings
{
  "refresh_interval": "60s" #默認1s
}

Translog

PUT my-index/_settings
{
  "translog.flush_threshold_size": "1gb",  #默認512M,當 translog 超過該值,會觸發 flush
  "translog.sync_interval": "60s", #默認5s
  "translog.durability": "async" #默認是 request,每個請求都落盤,忽視translog.sync_interval。設置成 async,異步寫入,根據index.translog.sync_interval參數的間隔時間做fsync。
}

關于Elasticsearch寫入數據底層的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台中县| 竹山县| 莒南县| 廉江市| 子长县| 射阳县| 哈尔滨市| 平陆县| 七台河市| 广昌县| 乌审旗| 育儿| 玉山县| 治多县| 鲜城| 溆浦县| 民丰县| 尚义县| 孝感市| 乌兰县| 务川| 西吉县| 容城县| 新巴尔虎右旗| 广水市| 射阳县| 阿拉尔市| 隆德县| 轮台县| 石屏县| 惠东县| 昔阳县| 攀枝花市| 余干县| 平安县| 泰安市| 和平区| 当阳市| 共和县| 深泽县| 铅山县|