该模块可以控制索引数据的存储方式,索引可以存储在内存和磁盘上。使用内存方式可以得到更好的性能,但受限于实际的可用的物理内存大小。
store level throttling
文件系统的存储类型
索引的存储类型有几种,可以使用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