选型

Elasticsearch

你可能会说

搜索框一输就卡,SQL 的 LIKE 根本不行?

基于 Lucene 的搜索与分析引擎倒排索引做全文检索、聚合分析、日志检索;近实时(默认 1 秒刷新),写入重,不适合当主数据库。
也常被叫作ES全文检索ELK
先问一句要全文搜索 / 日志检索?
默认Elasticsearch→擅长倒排 + 聚合→别用当主数据库
成熟度采用

什么时候选它

  • 站内搜索、商品筛选、日志检索(ELK)
  • 需要相关性排序、分词、聚合统计
  • 数据能从主库同步重建

什么时候别选

  • 事务型主数据(用关系库)
  • 写入后必须立刻读到(它是近实时)
  • 小数据量、简单前缀匹配(数据库索引就够)
容易混在一起 · 怎么分
Elasticsearch≠ClickHouse

ES 强在全文检索和日志;ClickHouse 强在大宽表聚合分析,两者常一起用。

Elasticsearch≠MySQL

ES 是检索副本,不保证事务和实时;MySQL 是事实源,检索能力弱。

Q面试会问什么

  • 问:为什么搜索快?
    答:倒排索引 term → 文档列表,避免全表扫描;分片并行查询再归并。
  • 问:和 MySQL 索引的区别?
    答:倒排按词项组织,支持分词、相关性和聚合;代价是写入放大、存储翻倍。
延伸阅读 · 权威出处