Elasticsearch:ES 的简介、特点及使用场景

1. ES 简介

  • ES,是一个开源的高扩展分布式全文检索引擎;
  • ES,基于Lucene;
  • 是当前最流行的企业级搜索引擎;
  • ES 是面向文档的;

2. ES 特点:

  • 大型分布式集群,处理PB级别数据;
  • 近乎实时的存储、检索数据;
  • 开箱即用,部署简单,操作简单;
  • 可扩展性好,可扩展至上百台服务器;
  • 使用 restful 风格的 API;
  • 对条件的过滤支持非常好;
  • ES 最核心的功能,检索、统计
  • ES 存储的数据是静态数据,不同于 MySQL 这类需要定期 CRUD 事务操作的数据库;
  • ES 不支持频繁的更新;
  • ES 不支持事务;
  • ES不是很适合存储原始数据,尤其是需要 CRUD 的数据;

3. ES 与 MySQL 等 RDB 的区别:

  • MySQL 属于 RDB,索引基于 b-tree,而 b-tree 是为写入优化而设计的索引结构;
  • ES 存储的多是静态数据,不需要频繁的更新,可以采用预先排序的方式换区更快的检索速度,代价是更新很慢;

4. ES 三种部署模式:

  • 使用 ES 作为主要存储; – 对于静态数据,推荐使用 elasticsearch 作为唯一数据存储,慎重权衡是否需要增加额外的存储;
  • 在现有 SQL database 上增加 ES 作为索引; – 该模式下,MySQL来做原始数据的存储,然后基于MySQL在上层部署我们的ES中间件来实现我们的搜索引擎; – MySQL 不适用于检索,但支持事务,可以保证不会出现脏数据,ES 不支持事务,不是很适合存储原始数据; – 很多业务场景的现实条件是,海量数据存储在 MySQL 上,迁移到 ES 之上的难度和风险很大;

    补充: MySQL、Oracle 使用 logstash-input-jdbc 作为 ES 中间件; MongoDB 使用 mongo-connector 作为 ES 中间件;

  • 使用 ES 和现有的工具;

5. ES 典型使用场景:

  • 排名;
  • 智能分词 + 模糊匹配查询;
  • 用户浏览行为日志追踪,推荐期望商品或内容;
  • 搜索引擎;
  • 全文检索;
  • 相关度排名;
  • 文本高亮;
  • 搜索推荐;
  • 电商网站,商品检索;
  • ELK;
  • 商品价格监控抢购;
  • 海量数据 BI;
  • 站内搜索(电商、招聘、门户、OA);