前言: Elasticsearch是当前搜索引擎市场上最受欢迎的高扩展分布式搜索引擎!本文从核心知识、工作原理、如何学习等几个方面进行详细梳理,还有视频教程分享,欢迎关注,讨论!
![88514a84690d319299aee5a34888810f.png](https://i-blog.csdnimg.cn/blog_migrate/e36fc2fa50c1bf031d805866bad0fe91.jpeg)
一、ElasticSearch是为了解决什么问题而产生?
- 想一想:亿级数据我们如何检索?
当系统数量量上了几十亿上百亿,我们一般会这样进行思考:
1)数据库优化,优化到极致的时候还是不能解决问题,怎么办?
答:mysql或者mongodb还有缓存!
2)如何解决单点问题?
答:F5,ZK,MQ
3)怎么确保数据安全性?
答: 热冷备,异地多活
4)检索时间太长的问题如何解决?
答:分表分库
5)数据统计分析如何解决?
答:异步 、非实时 - 传统应对方案
1)主从备份解决安全性问题
2)通过数据库代理解决单点故障问题和查询分发问题
![8e1307c37cc72289d905773d54b7b441.png](https://i-blog.csdnimg.cn/blog_migrate/3813f6c3f3d7f0f05955a7e50a4a6e5f.jpeg)
- Nosql应对方案
1)通过副本备份保证数据安全
2)通过节点竞争解决单节点问题
3)先检索分片信息,再分发到各个节点。
![9fd6506c68df660b6fe8e67c0c850d23.png](https://i-blog.csdnimg.cn/blog_migrate/27de688d9894c1aa3558734532c3c7d2.jpeg)
- 把数据存入内存(是否是最佳方案?)
ES另辟蹊径,把数据放入内存,但是我们知道这样是不可靠的,实际上也不太现实,当我们的数据达到一定量级的时候,内存完全不够用,扩充内存的巨大成本是不可接受的。
为了解决问题,我们需找了其他方式(ES方式):
1)有序存储数据
2)数据和索引分离
3)压缩数据
二、基础入门
- ElasticSearch简介
1)elasticsearch是一个基于Lucene的高扩展的分布式搜索引擎,开箱即用,非常方便!
2)elasticsearch隐蔽了Lucene的复杂性,对外提供Restful 风格的API来操作检索。 - 解决痛点
1)扩展性好,能够部署近百台服务器集群,处理TB以上级数据
2)几乎可以实现实时的去检索数据。 - 工作原理
1)索引结构
下图是ElasticSearch的索引结构,黑色部分属于物理结构,橙色部分属于逻辑结构,逻辑结构是为了更好的解释ElasticSearch的工作原理以及更好的使用物理结构。
![29043df5c7dd3d912f1febbfe3c94fa4.png](https://i-blog.csdnimg.cn/blog_migrate/a7ad0d82b2147f1e210d8a20468afe06.jpeg)
ES物理结构和逻辑结构
- 核心概念
1)Cluster:集群
ES支持集群搭建
2)Node:节点
形成集群的每个服务器
3)Shard(分片)
当有大量的doc存在时,由于内存空间不足,磁盘IO能力有限,没有办法足够快的响应请求,单节点已经无法满足需求。这种情况下,ES会把数据分为多个小的分片,将这些分片放到不同的服务器上。当你检索的时候,首先获取分布在不同分片上的索引,ES会把查询分发给相关的分片,并将结果集合起来,这个过程对用户来说是无感且透明的!
4)Replia(副本)
为了提高查询的吞吐量和实现高可用,ES设计了分片副本。副本就是把分片进行精确复制,每个分片可以没有或者多个副本。ES中可以有许多相同的分片,系统会选择一个分片作为主分片。 当主分片意外丢失,集群就会把其中一个副本提升为新的主分片。
5)全文检索
全文检索就是对一篇文章进行检索,可以根据关键字进行检索,类似于关系型数据库中的的like语句。 全文索引就是把内容根据词表进行分词,然后创建索引!
![9c1ff224a5e195ae289d4120103033b3.png](https://i-blog.csdnimg.cn/blog_migrate/88e860147620a3dfd2b19b8ba89e168d.jpeg)
三、应用场景
- ELK是什么东东?
ES目前最大的引用场景莫过于分布式日志分析系统ELK(elasticsearch+Logstash+kibana )
logstash: 日志收集
kibana:日志数据分析可视化
ELK架构为数据分布式存储系统、可视化查询界面和日志解析机制创建了一个功能强大的管理链。 三者相互配合,相辅相成,取长补短,共同完成分布式大数据处理工作。 - 应用案例
国内外很多优秀的案例,比比皆是,Github就是使用ES搭建,危机百科的核心基础也是ES,百度目前也官方使用ES作为文本数据分析,每天处理30TB的数据。 - 我们也可以有?
我们必须可以有,今年ElasticSearch发展飞速,已经超越其最初的搜索引擎的角色定位,现在已经增加了数据聚合分析和可视化特性,如果你有数以亿计的文档需要通过关键词定位,ES肯定是最佳选择。当然你可以把他当缓存服务使用,一样优秀。 - 什么场景使用ES?
业务不对操作的事性务有特殊要求,权限也不需要非常细,因为ES的权限属于短板。我们不需要大量的原子操作,还有ES可以完美解决业务流程多版本聚合的问题。
![c8a8dbe502f2a05fd6be06697c9cdad9.png](https://i-blog.csdnimg.cn/blog_migrate/892f970e81ee82d1e76b2a441306ac0b.jpeg)
四、如何部署
- Liunx平台安装:
1)下载:https://www.elastic.co/cn/downloads/
2)解压启动:bin/elasticsearch -d (后台运行) - windows平台下安装:
https://blog.csdn.net/linkkb/article/details/82805145
五、出现问题如何解决
出现问题,我们可以到ES中文社区提问,会有很多热心的伙伴帮助你:http ://elasticsearch.cn/
六、视频教程分享(无门槛)
![ef6ad230e5461ca1f861f90494e19c14.png](https://i-blog.csdnimg.cn/blog_migrate/73b79b94f8926733c98cc7b1d932f4b2.jpeg)
elasticsearch无门槛视频教程
结语: 该文章属于系列文章,笔者会持续更新,随后也会发SpringBoot2.0系列文章,还有SpringCloud Alibaba版本系列文章,大家可以持续关注。
关注:私信回复关键字:ES教程 获取资源!