ElasticSearch-01-简单认识ElasticSearch

简单认识Elasticsearch

在最初接触到Elasticsearch的时候是公司需要使用到用户的一些日志的统计,
再到后来会用在用户搜索行为的打分与推荐;可以说ElasticSearch对于开发的使用,运维的维护都有着很好的支持。

1、搜索

平常我们在Google上进行问题的搜索查询;AppStore,安卓市场中的输入关键字找到心仪的软件;钉钉的搜索公司人名;开发软件中搜索对应的信息等等许多场景下都是搜索,只是最后的承接持久化不一样,MySQL,Elasticsearch,Redis,Odps,Hive,Hbase等等,最终的目的是希望可以找到与关键字表征上更加一致,意义更加相近的信息。

2、数据库

MySQL是我们最长使用到的存储介质,优秀的性能,很好的社区与完善的文档,使得使用很方便;在我们进行搜索的时候数据库可以进行一些简单的 模糊匹配,但是如果存储的信息较多,假定一篇博文存储在数据库的一列中(该方式不一定好,只做假设),如果我们通过某个关键字搜索到某一篇博文,那么需要对于数据库中所有的文本进行扫描匹配,是否包含对应的而关键字;

所以如果利用数据库的形式在进行搜索通常来看,性能并不会很好;

3、Lucene

关于Lucene的介绍可以参考博文
1)Lucene全文搜索原理与使用 :https://blog.csdn.net/yangqian201175/article/details/51462413
2)Lucene参与项目持久层中对于索引库的增删:https://blog.csdn.net/yangqian201175/article/details/51478109

4、ElasticSearch

Lucene的使用和查询可以基本满足一些简单的需求,但是如果数据量很大的话呢,超过了垂直扩容的极限,就需要考虑使用多台机器进行数据的存储,管理,搜索,那么如果需要自己进行实现的话,就需要考虑诸多问题,比如数据如何均匀的分配,数据如何可以更快的查询,索引的CRUD,如果保证整个系统的高可用性;

Elasticsearch就很好的帮助我们解决了上述问题;

  1. ElasticSearch可以自动维护数据的分布,当我们建立索引后,可以根据设置进行主分片以及副分片的设置,并且可以将搜索请求分布到多个节点执行;
  2. 自动维护上述所说的副本,可以保证在主分片数与副分片数设置合理的情况下,当机器发生宕机的时候,副分片可以升级为主分片,保证数据的不丢失;
  3. 并且提供了比如聚合分析,地理位置搜索等高级功能;
  4. 开箱即用的,非常简单,运维在进行集群的部署与维护上很方便,有着完善的社区和官方文档可以咨询与查看。

5、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数据分析,ES执行数据分析和挖掘,Kibana进行数据可视化等等。

上述五点仅仅是大致上的简单认识Elasticsearch可以做一些什么事儿,可以帮助我们完成哪些工作。

你可能感兴趣的:(Elasticsearch)