数据建模 #
如何为搜索设计数据结构?这是每个 Easysearch 用户的关键问题。
和传统关系型数据库不同,Easysearch 更倾向于通过冗余与预计算来换取读性能与查询表达力。好的建模能让查询简洁高效,坏的建模则会导致查询复杂、性能低下。
本章内容 #
| 主题 | 说明 |
|---|---|
| 文档设计 | 文档结构、字段设计、多字段、标识符与路由、更新模式与并发控制 |
| 反范式与权衡 | 规范化 vs 冗余、何时反范式、更新成本与一致性 |
| Nested 建模 | 一对多/多对多的嵌套对象、笛卡尔积假匹配、nested 查询与聚合 |
| Parent-Child 建模 | 父子关联、与 Nested 对比、路由策略、has_child/has_parent |
| 向量字段建模 | 向量/语义搜索的字段设计、维度选择、存储优化与性能权衡 |
| 时间序列建模 | 按时间组织索引、别名管理、索引模板、数据保留策略 |
| 多租户建模 | 一用户一索引 vs 共享索引、路由优化、别名、容量规划 |
推荐阅读顺序 #
- 文档设计 → 先搞定单个文档"放什么字段、怎么设计"
- 反范式与权衡 → 理解搜索系统中冗余的价值与代价
- Nested → 一对多 / 多对多下的数组字段与嵌套对象
- Parent-Child → 需要真正引用关系、且更新/生命周期不同步时
- 向量字段建模 → 语义搜索场景中的向量存储与优化
- 时间序列 → 日志/指标/事件流的索引规划
- 多租户 → 多用户/多组织场景下的索引划分与隔离