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环境下可以使用一下命令进行调整:

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

相关推荐