JJava 知识库
JAVA INTERVIEW

高频面试题

ES进阶约 2 分钟

业务要求商品修改后 1 秒内可搜索,你会怎么解释 ES 的近实时并设计刷新策略?

参考回答约 2 分钟 · 口语表达
我的判断

商品修改后 1 秒内可搜索,本质是 refresh SLA;通过合理 refresh interval、写入链路监控和少量 wait_for 满足,不对每条写强制刷新。

我会先把“可搜索”定义清楚:数据库提交到事件发出、消费者写 ES、ES refresh 三段总和都要在一秒内,不能只调 ES。链路会记录业务版本和各阶段时间,监控端到端 indexing lag。

普通高吞吐写入保持约 1 秒 refresh interval 即可;管理后台更新后必须立即验证的少量请求,可以使用 refresh=wait_for,等待下一轮刷新。refresh=true 每条都创建可见小 segment,会增加 merge 与查询压力,不会全局使用。

大批量导入时可暂时增加 refresh interval,导入完成主动 refresh 后再恢复;副本和写入批次也要纳入吞吐测试。

如果业务要求的是结算价格立即正确,我不会依赖搜索结果,结算仍回 MySQL/价格服务校验。搜索一秒可见和交易强一致是两个不同目标。