--- title: "索引存储预加载配置" date: 2026-02-23 lastmod: 2026-02-23 description: "控制索引存储文件预加载的配置项说明" tags: ["索引配置", "存储管理", "性能优化"] summary: "配置项作用 # 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 向量数据 加速向量查询 * 所有文件 预加载所有(谨慎使用) 工作原理 # 预加载机制:" --- ## 配置项作用 `index.store.preload` 配置项控制在打开索引时预加载哪些扩展名的文件到文件系统缓存。预加载可以加速首次查询性能,但会增加索引打开时间和内存使用。 ## 配置项类型 该配置项为**静态配置**,需要在创建索引时设置。 ## 默认值 ``` [](空数组,不预加载) ``` ## 是否必需 **可选配置项**(有默认值) ## 配置格式 ```json // 默认配置(不预加载) { "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. 默认配置(推荐) ```json { "settings": { "index.store.preload": [] } } ``` **适用场景:** - 首次查询性能不关键 - 限制内存使用 - 快速索引打开 ### 2. 预加载字段数据 ```json { "settings": { "index.store.preload": ["fdt", "dvd"] } } ``` **适用场景:** - 大量排序操作 - 字段数据访问频繁 - 充足的文件系统缓存 ### 3. 预加载所有文件 ```json { "settings": { "index.store.preload": ["*"] } } ``` **适用场景:** - 首次查询性能至关重要 - 大量内存 - 文件系统缓存充足 ### 4. 不预加载 ```json { "settings": { "index.store.preload": [] } } ``` **适用场景:** - 内存受限 - 索引频繁开关 - 首次查询不频繁 ## 推荐设置建议 | 场景 | 推荐配置 | 说明 | |-----|---------|------| | 默认 | [] | 不预加载 | | 频繁排序 | ["fdt", "dvd"] | 预加载字段数据 | | 快速首次查询 | ["*"] | 预加载所有 | | 内存受限 | [] | 不预加载 | | 时序数据 | ["tim", "tip"] | 预加载时间相关 | ## 性能影响 | 配置 | 索引打开 | 首次查询 | 内存使用 | 推荐场景 | |-----|---------|---------|---------|---------| | [] | 快 | 慢 | 低 | 默认推荐 | | ["fdt", "dvd"] | 慢 | 快 | 中 | 排序优化 | | ["*"] | 很慢 | 很快 | 高 | 首次查询关键 | ## 监控建议 ```bash # 查看索引配置 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 时效果更明显