存储编辑

存储模块允许您控制索引数据在磁盘上的存储和访问方式。

这是一个底层设置。某些存储实现的并发性能较差,或者禁用了堆内存使用优化。我们建议您坚持使用默认值。

文件系统存储类型编辑

存在不同的文件系统实现或*存储类型*。默认情况下,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"
  }
}

这只是一个专家设置,将来可能会被删除。

以下部分列出了所有支持的不同存储类型。

fs
默认文件系统实现。这将根据操作环境选择最佳实现,目前在所有受支持的系统上都是 hybridfs,但将来可能会发生变化。
simplefs
已弃用::[7.15,“simplefs 已弃用,将在 8.0 中删除。请改用 niofs 或其他文件系统。Elasticsearch 7.15 或更高版本对 simplefs 存储类型使用 niofs,因为它提供了优于或等同于 simplefs 的性能。”]

Simple FS 类型是使用随机访问文件的文件系统存储(映射到 Lucene SimpleFsDirectory)的简单实现。此实现的并发性能较差(多个线程会遇到瓶颈),并且禁用了某些堆内存使用优化。

niofs
NIO FS 类型使用 NIO 将分片索引存储在文件系统上(映射到 Lucene NIOFSDirectory)。它允许多个线程同时从同一个文件读取。不建议在 Windows 上使用它,因为 SUN Java 实现中存在错误,并且禁用了某些堆内存使用优化。
mmapfs
MMAP FS 类型通过将文件映射到内存 (mmap) 将分片索引存储在文件系统上(映射到 Lucene MMapDirectory)。内存映射在您的进程中使用一部分虚拟内存地址空间,该空间的大小等于被映射文件的大小。在使用此类之前,请确保您已允许足够的 虚拟地址空间
hybridfs
hybridfs 类型是 niofsmmapfs 的混合体,它根据读取访问模式为每种文件类型选择最佳文件系统类型。目前,只有 Lucene 词汇字典、范数和文档值文件被内存映射。所有其他文件都使用 Lucene NIOFSDirectory 打开。与 mmapfs 类似,请确保您已允许足够的 虚拟地址空间

您可以通过设置 node.store.allow_mmap 来限制 mmapfs 和相关的 hybridfs 存储类型的使用。这是一个布尔设置,指示是否允许内存映射。默认情况下允许。例如,如果您在无法控制创建大量内存映射的能力的环境中,则此设置很有用,因此您需要禁用使用内存映射的能力。