ElasticSearch 的功能
分布式的搜索引擎和数据分析
-
搜索:比如说百度的搜索,淘宝的商品搜索,一些app内部的搜索,IT系统的站内搜索。
-
数据分析:比如说统计电商网站的访问量,每天的新增用户的数量,在哪个城市的用户比较多。
全文检索
-
结构化搜索:比如你想搜索某书城的Java相关的书籍有哪些。
-
数据分析:对你搜索出来的数据进行分析,比如说哪些书籍的销售量最高,哪些书籍的好评度最高。
-
进实时:如果你处理数据需要一小时,那么这就不叫进实时了,应该称为离线批处理,只有数据处理时间达到秒级才能算的上是进实时。
-
对海量数据进行进实时的处理:由于ES是分布式的,可以自动将海量数据分散到多台服务器上存储与检索,自然就达到了进实时的数据处理,举个反例,比如说Lucence,它是一个单机应用,所以只能处理单台服务器可以处理的数据量。
ElasticSearch 适用于什么场景
-
维基百科:全文检索,高亮,搜索推荐等等
-
GitHub:上千亿行的代码搜索
-
电商网站:搜索商品
-
日志数据分析:logstash采集数据,ES进行数据分析处理
-
商品价格监控网站:用户设定某商品的价格阈值,当监控到商品的金额低于这个阈值的时候,就发送消息通知用户
ElasticSearch 的特点
-
可以作为一个大型分布式集群(数百台服务器)技术,处理PB级别的数据,服务大公司,也可以运行在单机上,服务小公司。
-
ElasticSearch不是什么新技术,主要是将全文检索,数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES,它里面的实现技术很早就有了,比如Lucence的全文检索,分布式数据库mycat,还有商用的数据分析软件,这些都是有的。
-
对用户而言,是开箱即用的,非常简单,后面的章节会说明为什么是开箱即用的。作为中小型的企业,直接3分钟部署一下就可以再生产环境中使用了。
-
它相对于数据库来说的话,数据库的功能面对很多领域是不够用的,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据近实时处理,ElasticSearch作为传统数据库的一个补充,提供了数据库索不能提供的很多功能。