Elasticsearch(ES)索引的合理设计,核心目标是写入性能、查询性能、存储成本、可维护性之间的平衡。下面从实践经验角度,系统性讲一下怎么设计才“合理”。
在设计前先问自己:
适合:日志、监控、行为数据
logs-2025-01
logs-2025-02
优点:
delete index 成本极低)✅ 推荐:
适合:业务差异大
order-index
user-index
product-index
避免:
❌ 反例:
data-index(用户+订单+日志)
问题:
| 场景 | 类型 |
|---|---|
| 状态、ID | keyword |
| 金额 | scaled_float / long |
| 时间 | date |
| 内容搜索 | text |
| 不需要搜索的数字 | integer |
❌ 错误:
{ "price": "text" }
✅ 正确:
{ "price": "scaled_float" }
"username": {
"type": "keyword"
}
text 字段:
_source(极端情况)如果:
"_source": false
⚠️ 一般不推荐,调试会很难受
index: false不用于搜索的字段:
"remark": {
"type": "text",
"index": false
}
经验值:
✅ 强烈推荐
流程:
写 alias → 自动 rollover → 冷热分离 → 自动删除
好处:
write-alias → logs-2025-01
read-alias → logs-*
好处:
❌ 单索引几百 GB
❌ 所有字段都是 text
❌ 分片数 = 节点数 × 很多
❌ 用 ES 当数据库(事务、强一致)
❌ 深度分页(from+size 超大)
日志系统
logs-write (alias)
logs-2025-01-01
logs-2025-01-02
ILM:
- hot: 1 replica
- warm: 0 replica
- delete: 30d
Mapping
level: keywordmessage: texttimestamp: dateES 索引设计 = 按时间拆 + 精准 mapping + 合理分片 + 别名 + ILM
如果你愿意,可以告诉我:
我可以直接帮你设计一套索引方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。