配置项作用 #
index.store.type 配置项控制索引数据在磁盘上的存储类型。不同的存储类型提供不同的性能特性和功能支持,如内存映射(mmap)可提高某些场景下的性能。
配置项类型 #
该配置项为静态配置,需要在创建索引时设置,创建后不可修改。
默认值 #
根据系统自动选择:
- 64位 JVM 且支持 mmap → hybridfs
- 其他情况 → fs
是否必需 #
可选配置项(有默认值)
可选值 #
| 值 | 说明 |
|---|---|
fs | 文件系统存储(默认) |
niofs | NIO 文件系统存储 |
mmapfs | 内存映射文件系统 |
hybridfs | 混合存储系统 |
simplefs | 简单文件系统(仅用于测试) |
配置格式 #
// 创建索引时指定
PUT /my_index
{
"settings": {
"index.store.type": "niofs"
}
}
// 使用默认(推荐)
PUT /my_index
{
"settings": {
"index.store.type": "fs"
}
}
// 使用内存映射
PUT /my_index
{
"settings": {
"index.store.type": "mmapfs"
}
}
存储类型说明 #
1. fs(文件系统存储) #
默认存储类型,根据系统自动选择最佳实现:
- 64位系统支持 mmap → 使用 hybridfs
- 32位系统或 mmap 不可用 → 使用 niofs
特点:
- 自动优化
- 兼容性好
- 推荐用于生产环境
2. niofs(NIO 文件系统) #
使用 Java NIO 的文件系统实现。
特点:
- 跨平台兼容性好
- 性能中等
- 不依赖 mmap
3. mmapfs(内存映射文件系统) #
使用内存映射技术访问文件。
特点:
- 某些场景下性能更好
- 依赖操作系统的 mmap 支持
- 可能受地址空间限制
4. hybridfs(混合存储系统) #
结合 mmap 和普通文件访问。
特点:
- 对小文件使用 mmap
- 对大文件使用普通访问
- 平衡性能和资源使用
5. simplefs(简单文件系统) #
仅用于测试目的,不建议生产使用。
特点:
- 简单实现
- 性能较差
- 仅用于测试
使用场景 #
1. 默认配置(推荐) #
{
"settings": {
"index.store.type": "fs"
}
}
适用于大多数生产环境。
2. 明确指定 NIO #
{
"settings": {
"index.store.type": "niofs"
}
}
适用场景:
- 需要跨平台一致性
- 不使用 mmap
3. 内存映射模式 #
{
"settings": {
"index.store.type": "mmapfs"
}
}
适用场景:
- 64位 JVM
- 大量随机读
- 确保支持 mmap
推荐设置建议 #
| 环境 | 推荐类型 | 说明 |
|---|---|---|
| 生产环境 | fs | 自动选择最佳类型 |
| 32位 JVM | niofs | 不支持 mmap |
| 64位 JVM | fs/hybridfs | 自动选择 |
| 测试环境 | simplefs | 仅测试用途 |
性能对比 #
| 存储类型 | 读性能 | 写性能 | 内存占用 | 跨平台 |
|---|---|---|---|---|
| fs | 好 | 好 | 中 | 好 |
| niofs | 中 | 中 | 低 | 好 |
| mmapfs | 很好 | 中 | 高 | 中 |
| hybridfs | 好 | 好 | 中 | 好 |
监控建议 #
# 查看索引存储类型
GET /my_index/_settings?filter_path=*.store.type
# 查看所有索引配置
GET /_all/_settings?filter_path=*.store.type
# 查看节点存储支持
GET /_nodes/settings?filter_path=*.store.allow_mmap
注意事项 #
- 静态配置:创建索引后不可修改
- 创建后不可变:存储类型在索引创建后固定
- 与 mmap 相关:mmapfs 需要系统支持
- 性能影响:不同类型对性能有影响
- 平台兼容性:某些类型可能在不同系统表现不同
- 生产推荐:生产环境建议使用默认值





