配置项作用 #
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
注意事项 #
- 静态配置:创建索引后不可修改
- 内存消耗:预加载会增加内存使用
- 打开延迟:预加载会增加索引打开时间
- 文件系统缓存:需要足够的文件系统缓存
- 谨慎使用 [*]:预加载所有文件可能消耗大量内存
- 与 mmap 相关:使用 mmapfs 时效果更明显





