一,Elasticsearch的功能
1.分布式的搜索引擎和数据分析引擎
搜索:百度,网站的站内搜索,IT系统的检索 数据分析:电商网站(排行榜),新闻网站(访问量) 分布式,搜索,数据分析
2.全文检索,结构化检索,数据分析
全文检索:我想搜索商品名称包含牙膏的商品 select * from products where products_name like “%牙膏%”
结构化检索:我想搜索商品分类为日化用品的商品都有哪些 select * from products where category_id=“日化用品”
数据分析:我想分析每一个商品分类下有多少个商品 select category_id, count( * ) from products group by category_id 部分匹配、自动完成、搜索纠错、搜索推荐
3.对海量数据进行近实时的处理
分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索 海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了 近实时:检索个数据要花费1小时(这个不叫近实时,是离线批处理,batch-processing);在秒级别对数据进行搜索和分析 跟分布式/海量数据相反的:Lucene,单级应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的数据量
二,Elasticsearch的使用场景
1.维基百科,类似于百度百科,牙膏,牙膏的维基百科,全文检索,高亮,搜索推荐
2.The Guardian(国外新闻网站)
类似搜索新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)
3.Stack Overflow(国外的程序异常论坛)
IT问题,程序报错,提交上去,有人会和你讨论和回答。全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案。
4.GitHub(开源代码管理)搜索上千亿行代码
5.电商网站,检索商品
6.日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,Elasticsearch+logstash+kibana)
7.商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户
8.BI系统:商业智能
Business Intelligence,比如有个大型商场集团,BI,分析一下某某区域最近三年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数据报表,某某区区,最近三年,每年消费金额呈现100%的增长,而且群体85%是高级白领,开一个新商场。ES执行数据分析和挖掘,Kibana进行数据可视化