Solr 与搜索
Solr vs Elasticsearch。
25 分钟
Solr 与搜索
Apache Solr 与 Elasticsearch 同源 Lucene,都是 倒排索引 + 分布式搜索。CodeRoadMap 主 track 是 elasticsearch-essentials;本课帮你 理解 Solr 定位,避免「搜素引擎只有 ES」或混用概念。
学习目标
- 对照 ES 理解 Solr 的 Core、Schema、SolrJ
- 说清 Solr vs Elasticsearch 的选型差异
- 明确搜索库 不替代 postgresql-essentials 主库
共同基础:Lucene
文档 → 分词 → 倒排表(term → doc ids)
查询 → 布尔组合 → 打分排序 → 返回 hits
es-mapping 的 field type 与 Solr 的 schema.xml / managed schema 职责类似:先定 mapping,再索引。
Solr vs Elasticsearch
| 维度 | Apache Solr | Elasticsearch |
|---|---|---|
| 配置 | 传统 schema、SolrCloud | Index template、动态 mapping |
| 查询 | Solr Query Parser、JSON Request API | Query DSL、REST 统一 |
| 生态 | 企业 Java 栈、SolrJ | ELK、Kibana、云托管多 |
| 运维 | ZooKeeper(SolrCloud) | 自带集群协调 |
| 本站主线 | 了解即可 | 推荐深入 |
新项目多数选 ES(文档、工具链、Spring Data ES);已有 Solr 集群或强 schema 治理 的企业可能延续 Solr。
架构分工
PostgreSQL(权威 cf_track / cf_lesson)
↓ CDC 或双写
Elasticsearch / Solr(搜索、联想、高亮)
↓ 可选
Redis 缓存热词(见 scaling-essentials)
搜索索引 ** eventual consistent**:主库为准,索引延迟需产品接受;与 scale-cap 一致。
练习
- 阅读 es-intro,列出 3 个与 Solr 共通概念
- 写一句话:课程站内搜索为何不宜
LIKE '%keyword%' - 对比:何种场景你会坚持 Solr 而非迁 ES
小结
Solr 与 ES 同根 Lucene;本站以 ES 为主,Solr 作企业存量对照。 下一课 Firebase:移动端 BaaS 数据层。