elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂
作者:阿里云MVP 銘毅
往期內容:
死磕 Elasticsearch 方法論:普通程序員高效精進的 10 大狠招!
Elasticsearch學習,請先看這一篇!(Elasticsearch教程01)
Elasticsearch增、刪、改、查操作深入詳解(Elasticsearch教程02)
1、關于ES index存儲在內存的問題?
(1)早期ES1.X版本對ES索引存儲介紹:
原文地址:
https://www.elastic.co/guide/en/elasticsearch/reference/1.4/index-modules-store.html
ES1.X存儲模塊可以控制索引數據的存儲方式,索引可以存儲在內存和磁盤上。使用內存方式可以得到更好的性能,但受限于實際的可用的物理內存大小。
早期ES1.X版本有選項將索引存儲到內存中,但是相比基于mmap的存儲方式,這種方式并沒有改善性能,所以在ES2.X版本中Memory存儲類型已經被刪除。
(2)最新的ES2.X版本(截止:2016-08-08)索引存儲介紹:
原文地址:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-store.html
ES2.X版本中該Memeory選項已經被刪除。
現在ES2.X中在內存中映射索引使用mmap 系統調用。
并且ES的大牛也都推薦就索引存儲而言,使用缺省默認值default_fs。
2、ES2.X文件系統存儲類型
基于文件系統的存儲是默認索引存儲方式。有不同的實現或存儲類型。最好的一個操作系統的自動選擇是:mmapfs使用在Windows的64bit系統上,simplefs使用在windows的32bit系統上,除此之外默認是用(hybrid niofs 和 mmapfs)。
可以通過修改配置文件elasticsearch.yml來指定存儲類型:
index.store.type: niofs
當然也可以在創建索引的時候指定:
下面是所有支持的不同存儲類型:
(1) Simple FS(簡單文件系統)
Simplefs類型是一個簡單的實現隨機訪問文件的文件存儲系統(映射到Lucene SimpleFsDirectory的)。該實現的并發性能較差(多線程是個瓶頸)。當你需要將索引持久化,最好使用niofs。
(2) NIO FS(NIO文件系統)
niofs類型是通過NIO將分片索引文件寫到文件系統上(映射到Lucene NIOFSDirectory)。它允許多線程同時讀取文件。不建議在Windows系統上使用,由于SUN JAVA實現上的一個錯誤。
(3) MMap FS(內存映射文件系統)
mmapfs類型存儲分片索引到文件系統上(映射到Lucene MMapDirectory)通過映射文件到內存中(MMAP)。
內存映射的過程中將劃分出與被映射文件大小一樣的虛擬內存空間。使用這個類之前,請確保您有足夠的虛擬地址空間。
Linux下虛擬內存設置:
永久生效:
(4)Hybrid MMap / NIO FS(缺省值, default_fs)
default_fs默認的類型是NIO FS和MMapFS,它將為每個類型的文件選擇最好的文件系統。 目前,只有Lucene的term 路徑和DOC值的文件被存儲器映射,以降低運行系統的影響。所有其他文件都使用Lucene NIOFSDirectory打開。如果你的term字典很大,地址空間設置(部分叫做“虛擬內存編輯“)也可能適用,。
3、ES索引存儲小結
一句話總結:
在2.X版本,用戶無需關注索引存儲在內存中還是存儲在硬盤中。使用默認的存儲設置default_fs,以達到最優性能
在Windows的64bit系統上使用 mmapfs ;
在windows的32bit系統上使用 simplefs ;
除此之外默認使用 default_fs (hybrid niofs 和 mmapfs),如Linux系統。
4、細節討論
https://discuss.elastic.co/t/how-to-set-elasticsearch-index-store/57556/2
更多ES相關實戰干貨經驗分享,請關注【銘毅天下】微信公眾號
總結
以上是生活随笔為你收集整理的elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows守护进程简单示例
- 下一篇: Windows 下git 与 githu