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);