写在前面
本文看下es的简介。
1:简介
背后公司,elastic,08年纽交所上市,与腾讯,阿里等云厂商有合作,推出云产品,类似功能的产品由solr,splunk,但使用量es当前遥遥领先,下图是es与solr的对比图,可看到在03年左右es已经一骑绝尘了,如下图:
可看到,使用很大,并且使用的非常广泛,分布全球。
2:为什么会有es
es是基于lucene开发的一款分布式的搜索产品,但是已经有了lucene,为什么还需要es呢?为了了解这个问题,我们先来看下lucene,lucene是Doug Cutting开发的,其也是hodoop的作者,就是下图的哥们:
lucene是99基于Java语言开发,05年成为apache的顶级开源项目,优点是性能高,搜索能力强,但是也有如下的缺点:
1:只能基于Java语言开发,局限性比较大
2:学习曲线异常陡峭,本人就学过,已经世上无难事,只要肯放弃了
3:不支持水平扩展,想要支持大数据量的话,必须自己二次开发
基于以上的不足,就有大牛站出来带领像我这种小菜鸟走出困境了,这位大哥就是shaybanon:
04年基于Java语言开发,取名为compass,10重构comapass,取名为elasticsearch,优点如下:
1:支持水平扩展(此处应有掌声)
2:提供rest接口,可以跨语言使用
3:2降级了学习的门槛
4:支持jdbc(Java),odbc(微软)
3:es介绍
核心功能,搜索,聚合。10年正式发布,12年创立公司,半年时间就达到160万的下载量,并拿到1000万🔪的风险投资,具体版本历史如下:
任何一个产品都离不开良好的生态系统,es也一样,其生态圈我们叫做elastic stack,如下图:
各个组件作用如下:
1:logstash,beat
数据收集,支持从不同的数据源收集数据,并做数据的处理,脱敏等
2:elasticsearch
数据存储,搜索,聚合
3:kibana
数据各种形式的展现,表格,报表等
4:X-pack
扩展数据包,安全,告警,监控,机器学习等
5:云服务
提供产品的云服务
其中beat有多种,如下图:
3.1:与数据库集成
因为es本身无法提供事务性的消息处理,所以这种场景还是需要依赖于MySQL ,但我们又想利用es高效的数据查询功能,该怎么办呢,这时就需要将mysql的数据同步到es中,此时一般采用如下的架构:
3.2:数据采集与展现
为了将各种数据源的数据,存储在es,并最终使用kibana进行展现,一般采用如下的流程: