搜索结果: "Elasticsearch" (20)
聚合:把搜索页变成数据分析页
运营要报表:各品牌商品数、价格段分布、销量趋势。terms 分桶、avg 嵌套指标、range 切区间、date_histogram 看趋势——聚合走 doc values 正排,查询归查询,统计归统计,别拿 text 做聚合。
深分页:翻到第 100 页的代价
from 加 size 翻到一万条直接报错,这不是 bug 是保护。分布式归并让深翻页成本随页码线性放大——search_after 用游标续页、scroll 拍快照导数、PIT 保证视图一致,三把钥匙开三把锁。
进阶查询:高亮、纠错与多字段搜索
搜索页体验三件套:关键词不高亮像白搜、打错一个字零结果很劝退、只搜标题漏掉详情。highlight 管高亮、multi_match 管多字段加权、suggest 管纠错补全——把 did you mean 做成产品能力的完整路子。
评分:_score 到底怎么算出来的
月销一万的「燕麦拿铁」排在月销三百的「燕麦酥」后面,运营怒了。拆开 BM25 三个因素看懂 _score,用 explain 亲眼看打分过程,再用 function_score 把销量加权进排序——相关性引擎让位给业务规则。
查询入门:match、term、filter 与 bool
搜索词该分词吗?状态筛选为什么不该算分?四个动词分工表:match 管全文、term 管精确、match_phrase 管短语、bool 管组合,query 与 filter 两种上下文算不算分是分水岭。对 text 用 term 是新手第一坑。
近实时:为什么搜不到刚写进去的文档
文档写入成功,搜索却是零结果,一秒后又凭空出现——这不是 bug,是 ES 的近实时设计。内存 buffer、一秒 refresh、translog 兜底、段不可变与合并,写入链路一次拆到底。
mapping:字段类型建错,神仙也救不回来
价格建成 text,排序按字典序把 10 排在 9 前面,聚合直接报错。text 与 keyword 的分工、动态 mapping 的自作主张、object 数组的错配陷阱、类型改不了的补救路线——mapping 是地基,地基错了整栋楼返工。
分词器:中文搜索的第一道坎
默认的 standard 分词器把「燕麦拿铁」剁成四个单字,召回全靠缘分。装上 IK,分清 ik_max_word 与 ik_smart 两把刀,用对「细进粗出」,配好远程词典热更新——中文搜索及格线一次划清。
核心概念:Index、Document、Shard 与 Replica
从 MySQL 的世界观平移进 ES:表变索引,行变文档。但 shard 是新物种——建索引时定死的主分片数决定了路由公式,也决定了后期改起来的成本。概念地图一次画清。