Elasticsearch模塊功能之-索引存儲(Store)

該模塊可以控制索引數據的存儲方式,索引可以存儲在內存和磁盤上。使用內存方式可以得到更好的性能,但受限於實際的可用的物理內存大小。

store level throttling

Elasticsearch中的segments merge採用異步的方式,但系統低IO的情況下還是會影響索引和查詢操作。想要解決這種問題,Elasticsearch提供兩種方式(索引級別和節點 級別)的配置。
節點級別配置
indices.store.throttle.type:merge
indices.store.throttle.max_bytes_per_sec:5mb //默認20mb
如上設置之後,該節點上的segments merge不會超過5mb/s
索引級別設置:
index.store.throttle.type:node
index.store.throttle.max_bytes_per_sec:10mb
如上設置是基於 索引的,可以跨多個節點。

文件系統的存儲類型

索引的存儲類型有幾種,可以使用index.store.type: niofs進行配置,在創建索引的時候也可以動態指定。

               simple fs對應Lucene中的SimpleFsDirectory 這種實現的併發性能較差,多線程會出現瓶頸。當索引需要持久化最好使用niofs

               nio fs對應Lucene中的NIOFSDirectory。這種方式可以多個線程併發地讀同一個文件。

               mmapfs:對應Lucene中MMapDirectory。這種方式將映射的文件加載到虛擬地址空間。在使用該類型之前,請確定是否有足夠的虛擬內存。在linux環境下可以使用一下命令進行調整:

sysctl -w vm.max_map_count=262144
希望永久生效可以使用在/etc/sysctl.conf中配置vm.max_map_count

      hybrid mmap / nio fs默認類型,這種方式使用以上兩種方式,爲了減少對系統的影響,目前Lucene只在term directory和doc values文件映射到內存中。其他的情況都是用Lucene的NIOFSDirectory。

              memory:對應Lucene中的RamIndexStore。將索引存放在Jvm堆空間之外內存中。


【參考】http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-store.html

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