存储
编辑存储编辑
存储模块允许您控制索引数据在磁盘上的存储和访问方式。
这是一个底层设置。某些存储实现的并发性能较差,或者禁用了堆内存使用优化。我们建议您坚持使用默认值。
文件系统存储类型编辑
存在不同的文件系统实现或*存储类型*。默认情况下,Elasticsearch 会根据操作环境选择最佳实现。
也可以通过在 config/elasticsearch.yml
文件中配置存储类型来为所有索引显式设置存储类型
index.store.type: hybridfs
这是一个*静态*设置,可以在创建索引时为每个索引设置
resp = client.indices.create( index="my-index-000001", body={"settings": {"index.store.type": "hybridfs"}}, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { 'index.store.type' => 'hybridfs' } } ) puts response
PUT /my-index-000001 { "settings": { "index.store.type": "hybridfs" } }
这只是一个专家设置,将来可能会被删除。
以下部分列出了所有支持的不同存储类型。
Simple FS 类型是使用随机访问文件的文件系统存储(映射到 Lucene SimpleFsDirectory
)的简单实现。此实现的并发性能较差(多个线程会遇到瓶颈),并且禁用了某些堆内存使用优化。
-
niofs
- NIO FS 类型使用 NIO 将分片索引存储在文件系统上(映射到 Lucene
NIOFSDirectory
)。它允许多个线程同时从同一个文件读取。不建议在 Windows 上使用它,因为 SUN Java 实现中存在错误,并且禁用了某些堆内存使用优化。 -
mmapfs
- MMAP FS 类型通过将文件映射到内存 (mmap) 将分片索引存储在文件系统上(映射到 Lucene
MMapDirectory
)。内存映射在您的进程中使用一部分虚拟内存地址空间,该空间的大小等于被映射文件的大小。在使用此类之前,请确保您已允许足够的 虚拟地址空间。 -
hybridfs
hybridfs
类型是niofs
和mmapfs
的混合体,它根据读取访问模式为每种文件类型选择最佳文件系统类型。目前,只有 Lucene 词汇字典、范数和文档值文件被内存映射。所有其他文件都使用 LuceneNIOFSDirectory
打开。与mmapfs
类似,请确保您已允许足够的 虚拟地址空间。
您可以通过设置 node.store.allow_mmap
来限制 mmapfs
和相关的 hybridfs
存储类型的使用。这是一个布尔设置,指示是否允许内存映射。默认情况下允许。例如,如果您在无法控制创建大量内存映射的能力的环境中,则此设置很有用,因此您需要禁用使用内存映射的能力。