Elasticsearch模块功能之-索引存储(Store)
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环境下可以使用一下命令进行调整:
view plaincopy
[*]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
from http://blog.csdn.net/changong28/article/details/38406261
页:
[1]