会装一台车,更要会装三种车
前面十八篇的零件都齐了,这篇换一种讲法:不添新零件,只做三套完整配方。搜索引擎的三大高频场景——电商搜索、日志平台、数据看板——对 ES 的用法侧重完全不同,看完就知道你的需求该抄哪张图纸。
配方一:电商搜索(本系列主线)
老王的咖啡商城就是完整样板,把关键配置点串一遍:
| 环节 | 配置要点 | 复习篇目 |
|---|---|---|
| 分词 | IK 细进粗出,新词进远程词典 | 第 4 篇 |
| mapping | text 搜索加 keyword 聚合,价格 numeric | 第 5 篇 |
| 召回 | multi_match 标题加权,同义词两头挂 | 第 9、16 篇 |
| 排序 | BM25 打底,function_score 叠销量新品 | 第 8 篇 |
| 兜底 | 纠错 suggest,零结果率监控 | 第 9、16 篇 |
电商搜索的灵魂是相关性加业务规则的平衡:算法分太弱用户搜不到,业务分太重搜索变推荐。老王的试错结论是 BM25 做底、function_score 轻量叠加,权重调整跟着点击日志走,别拍脑袋。
配方二:日志平台
日志场景的画像完全不同:写入巨大、查询集中在最近、老数据只进不出。配方要点:
索引按天滚动(第 14 篇的 rollover 正面战场),message 全文字段走 standard 分词就够(日志不用中文精切),级别和时间戳字段建 keyword 与 date 做 filter。查询几乎全是「最近一小时 error 关键字」这类组合,用 date_histogram 聚合画趋势、terms 统计 top 服务。保留策略用 ILM:热节点放七天内,温节点放三十天,到期自动删——日志平台的第一性能法则是别把冷数据留在热节点。refresh_interval 拉到 30 秒换写入吞吐,日志晚半分钟可见没人心疼。
配方三:数据看板
看板场景(运营驾驶舱、经营日报)几乎是纯聚合:几条 terms 和 date_histogram 出全部图表,查询少统计多。配方要点:
统计维度字段全建 keyword,指标字段用 numeric,doc values 天然适配;同步走定时扫表或 binlog 订阅(第 15 篇),分钟级延迟完全够用;去重计数用 cardinality,接受近似值;图表接口固定不变的话,给结果加一层短 TTL 缓存(Redis 或本地),十个人看的看板不需要十个人各查一遍。
三张配方的共性心法
| 维度 | 电商搜索 | 日志平台 | 数据看板 |
|---|---|---|---|
| 读写比例 | 读多写少 | 写多读少 | 写少读多 |
| 核心诉求 | 相关性 | 写入吞吐 | 聚合效率 |
| 索引形态 | 稳定大索引 | 按天滚动 | 按主题建库 |
| 同步方式 | 异步双写或 binlog | 直接写入 | 定时扫表 |
共性心法就一条:先回答读写比例,再定索引形态,最后挑同步方式。顺序反了,后面全是补丁。
小结
三套配方一句话:电商搜索拼相关性闭环,日志平台拼滚动与吞吐,数据看板拼聚合与缓存。同一套 ES,先看清场景,再动手建索引。
配方背熟了,最后一步是把 20 篇里的血泪教训集中点名——那些老王真踩过或差点踩过的坑。下一篇讲陷阱集:十个真实事故现场,每一个都能直接进新人入职考试。
评论 (0)