📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

index.store.preload 配置项控制在打开索引时预加载哪些扩展名的文件到文件系统缓存。预加载可以加速首次查询性能,但会增加索引打开时间和内存使用。

配置项类型 #

该配置项为静态配置,需要在创建索引时设置。

默认值 #

[](空数组,不预加载)

是否必需 #

可选配置项(有默认值)

配置格式 #

// 默认配置(不预加载)
{
  "settings": {
    "index.store.preload": []
  }
}

// 预加载所有文件
{
  "settings": {
    "index.store.preload": ["*"]
  }
}

// 预加载特定扩展名
{
  "settings": {
    "index.store.preload": ["fdt", "dvd", "tim", "tip", "dim"]
  }
}

// 预加载索引文件
{
  "settings": {
    "index.store.preload": ["fdt", "dvd"]
  }
}

常用文件扩展名说明 #

扩展名说明预加载效果
fdt字段数据加速字段数据访问
dvd字典数据加速字典查询
tim时间索引加速时间范围查询
tip点数据加速点查询
dim维度数据加速维度查询
nvd数值数据加速数值数据查询
kdd字典数据加速关键字段查询
kdi索引数据加速索引查询
vec向量数据加速向量查询
*所有文件预加载所有(谨慎使用)

工作原理 #

预加载机制:

┌─────────────────────────────────────────────────────────────────┐
│                    预加载机制                                    │
└─────────────────────────────────────────────────────────────────┘

索引打开
    │
    ├── 检查 store.preload 配置
    │
    ├── 预加载配置文件扩展名
    │   │
    │   ├── 打开文件
    │   ├── 读取内容到文件系统缓存
    │   └── 保持文件句柄
    │
    └── 索引可用
         │
         └── 首次查询直接从缓存读取

使用场景 #

1. 默认配置(推荐) #

{
  "settings": {
    "index.store.preload": []
  }
}

适用场景:

  • 首次查询性能不关键
  • 限制内存使用
  • 快速索引打开

2. 预加载字段数据 #

{
  "settings": {
    "index.store.preload": ["fdt", "dvd"]
  }
}

适用场景:

  • 大量排序操作
  • 字段数据访问频繁
  • 充足的文件系统缓存

3. 预加载所有文件 #

{
  "settings": {
    "index.store.preload": ["*"]
  }
}

适用场景:

  • 首次查询性能至关重要
  • 大量内存
  • 文件系统缓存充足

4. 不预加载 #

{
  "settings": {
    "index.store.preload": []
  }
}

适用场景:

  • 内存受限
  • 索引频繁开关
  • 首次查询不频繁

推荐设置建议 #

场景推荐配置说明
默认[]不预加载
频繁排序[“fdt”, “dvd”]预加载字段数据
快速首次查询["*"]预加载所有
内存受限[]不预加载
时序数据[“tim”, “tip”]预加载时间相关

性能影响 #

配置索引打开首次查询内存使用推荐场景
[]默认推荐
[“fdt”, “dvd”]排序优化
["*"]很慢很快首次查询关键

监控建议 #

# 查看索引配置
GET /my_index/_settings?filter_path=*.store.preload

# 查看索引文件
GET /_cat/indices/my_index?h=index,store.size

注意事项 #

  1. 静态配置:创建索引后不可修改
  2. 内存消耗:预加载会增加内存使用
  3. 打开延迟:预加载会增加索引打开时间
  4. 文件系统缓存:需要足够的文件系统缓存
  5. 谨慎使用 [*]:预加载所有文件可能消耗大量内存
  6. 与 mmap 相关:使用 mmapfs 时效果更明显