Elasticsearch索引存储类型
[attach]332[/attach]
文件系统存储类型
基于文件系统的存储是默认索引存储方式。有不同的实现或存储类型。最好的一个操作系统的自动选择是:mmapfs使用在Windows的64bit系统上,simplefs使用在windows的32bit系统上,除此之外默认是用(hybrid niofs 和 mmapfs)。
你可以通过修改配置文件elasticsearch.yml来指定存储类型:
index.store.type: niofs当然你也可以在创建索引的时候指定:
curl -XPUT localhost:9200/my_index -d '{ "settings": { "index.store.type": "niofs" } }';下面是所有支持的不同存储类型:
Simple FS(简单文件系统)
Simplefs类型是一个简单的实现随机访问文件的文件存储系统(映射到Lucene SimpleFsDirectory的)。该实现的并发性能较差(多线程是个瓶颈)。当你需要将索引持久化,最好使用niofs。
NIO FS(NIO文件系统)
niofs类型是通过NIO将分片索引文件写到文件系统上(映射到Lucene NIOFSDirectory)。它允许多线程同时读取文件。不建议在Windows系统上使用,由于SUN JAVA实现上的一个错误。
MMap FS(内存映射文件系统)
mmapfs类型存储分片索引到文件系统上(映射到Lucene MMapDirectory)通过映射文件到内存中(MMAP)。内存映射的过程中将划分出与被映射文件大小一样的虚拟内存空间。使用这个类之前,请确保您有足够的虚拟地址空间。
Linux下虚拟内存设置: # sysctl -w vm.max_map_count=262144 永久生效: update the vm.max_map_count setting in /etc/sysctl.conf. # echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
Hybrid MMap / NIO FS
默认类型存储碎片索引在文件系统中根据不同的文件类型的文件映射到内存(mmap)或使用Java NIO。目前只Lucene术语字典和doc值文件内存映射到减少对操作系统的影响。所有其他文件都使用Lucene NIOFSDirectory打开。内存 内存类型索引存储在主内存,使用Lucene的RamIndexStore。 也有节点级别的设置来控制高速缓存(重要的,当使用直接缓冲区): [attach]333[/attach] 参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-store.html#store-memory https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html#file-descriptors