一、搜索是啥意思?
大家都知道ES是搜索引擎,搜索框架,反正就是干搜索的,那搜索到底是个啥?
大白话来剖析搜索的含义就是:你想查个东西,输入了你要查的关键词,然后给你返回来一堆匹配度最高的文章,也就是你想要的结果。这就是搜索!
再比如:
- 搜索引擎:百度、Google等,这不都是搜索吗?!
- 站内搜索:淘宝、京东、新闻网站等网站,一般都带搜索功能,这不就是搜索吗?!
二、Elasticsearch是个啥?
ES是搜索框架。也就是说你用它就能实现类似百度、Google、淘宝、京东等这种搜索网站。他底层是lucene,简化了lucene的那些复杂API,它天然支持集群,开箱即用。性能也得到了大幅度提升。
emm…还不懂?
你把lucene理解成spring,而ES就是springboot,也就是说lucene很复杂,ES对lucene封装了,使其开箱即用变得很简单,同时又额外天然支持了集群,性能方面也得到了提高。
三、Elasticsearch有啥用?
- 分布式搜索引擎和数据分析引擎
搜索引擎:比如百度、Google、电商网站等搜索的场景
数据分析引擎:比如对用户的行为进行埋点,一般多用于大数据分析领域,你没发现你在淘宝或者头条或者抖音搜个东西后,下次再打开的时候给你推送的都是你之前常搜的那些类型的东西吗?
- 全文检索、精确搜索和聚合
全文检索:也就是说在全部内容里找你要检索的关键字,比如如下SQL:
SELECT * FROM table WHERE title LIKE "%Java%" OR content LIKE "%Java%";
结构化搜索:也就是说等值匹配,比如如下SQL:
SELECT * FROM table WHERE title = "JDK安装与配置";
聚合:比如京东都有分类的,统计每一个分类下有多少个商品:
SELECT category_id, COUNT(*) FROM table GROUP BY category_id;
- 能近实时的对海量数据进行处理
天然支持集群分布式。也就是说ES可以自动将海量数据分散到多台服务器上去存储和检索。分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的
近实时:检索个数据要花费好几分钟这就不叫近实时,ES可以在秒级别对海量数据进行搜索和分析。
四、Elasticsearch谁在用?
- 维基百科、好多新闻网站、好多电商网站、Stack Overflow
- 好多公司用于用户行为分析(比如你搜个商品、你点击某个连接等)
- BI(Business Intelligence:商业智能),数据分析、挖掘
- Github,支持搜代码,就是靠的ES
五、最后看下Elastic Stack生态圈
Elastic Stack整套生态圈就跟SpringCloud是的,全家桶,啥也有,存储、分析、搜索、可视化、告警等等都给你做好了组件。
【微信公众号】