elasticsearch 工作原理_《ElasticSearch深度剖析》想轻松学会ES这篇文章必看

前言: Elasticsearch是当前搜索引擎市场上最受欢迎的高扩展分布式搜索引擎!本文从核心知识、工作原理、如何学习等几个方面进行详细梳理,还有视频教程分享,欢迎关注,讨论!

88514a84690d319299aee5a34888810f.png

一、ElasticSearch是为了解决什么问题而产生?

  • 想一想:亿级数据我们如何检索?
    当系统数量量上了几十亿上百亿,我们一般会这样进行思考:
    1)数据库优化,优化到极致的时候还是不能解决问题,怎么办?
    答:mysql或者mongodb还有缓存!
    2)如何解决单点问题?
    答:F5,ZK,MQ
    3)怎么确保数据安全性?
    答: 热冷备,异地多活
    4)检索时间太长的问题如何解决?
    答:分表分库
    5)数据统计分析如何解决?
    答:异步 、非实时
  • 传统应对方案
    1)主从备份解决安全性问题
    2)通过数据库代理解决单点故障问题和查询分发问题
8e1307c37cc72289d905773d54b7b441.png
  • Nosql应对方案
    1)通过副本备份保证数据安全
    2)通过节点竞争解决单节点问题
    3)先检索分片信息,再分发到各个节点。
9fd6506c68df660b6fe8e67c0c850d23.png
  • 把数据存入内存(是否是最佳方案?)
    ES另辟蹊径,把数据放入内存,但是我们知道这样是不可靠的,实际上也不太现实,当我们的数据达到一定量级的时候,内存完全不够用,扩充内存的巨大成本是不可接受的。
    为了解决问题,我们需找了其他方式(ES方式):
    1)有序存储数据
    2)数据和索引分离
    3)压缩数据

二、基础入门

  • ElasticSearch简介
    1)elasticsearch是一个基于Lucene的高扩展的分布式搜索引擎,开箱即用,非常方便!
    2)elasticsearch隐蔽了Lucene的复杂性,对外提供Restful 风格的API来操作检索。
  • 解决痛点
    1)扩展性好,能够部署近百台服务器集群,处理TB以上级数据
    2)几乎可以实现实时的去检索数据。
  • 工作原理
    1)索引结构
    下图是ElasticSearch的索引结构,黑色部分属于物理结构,橙色部分属于逻辑结构,逻辑结构是为了更好的解释ElasticSearch的工作原理以及更好的使用物理结构。
29043df5c7dd3d912f1febbfe3c94fa4.png

ES物理结构和逻辑结构

  • 核心概念
    1)Cluster:集群
    ES支持集群搭建
    2)Node:节点
    形成集群的每个服务器
    3)Shard(分片)
    当有大量的doc存在时,由于内存空间不足,磁盘IO能力有限,没有办法足够快的响应请求,单节点已经无法满足需求。这种情况下,ES会把数据分为多个小的分片,将这些分片放到不同的服务器上。当你检索的时候,首先获取分布在不同分片上的索引,ES会把查询分发给相关的分片,并将结果集合起来,这个过程对用户来说是无感且透明的!
    4)Replia(副本)
    为了提高查询的吞吐量和实现高可用,ES设计了分片副本。副本就是把分片进行精确复制,每个分片可以没有或者多个副本。ES中可以有许多相同的分片,系统会选择一个分片作为主分片。 当主分片意外丢失,集群就会把其中一个副本提升为新的主分片。
    5)全文检索
    全文检索就是对一篇文章进行检索,可以根据关键字进行检索,类似于关系型数据库中的的like语句。 全文索引就是把内容根据词表进行分词,然后创建索引!
9c1ff224a5e195ae289d4120103033b3.png

三、应用场景

  • ELK是什么东东?
    ES目前最大的引用场景莫过于分布式日志分析系统ELK(elasticsearch+Logstash+kibana )
    logstash: 日志收集
    kibana:日志数据分析可视化
    ELK架构为数据分布式存储系统、可视化查询界面和日志解析机制创建了一个功能强大的管理链。 三者相互配合,相辅相成,取长补短,共同完成分布式大数据处理工作。
  • 应用案例
    国内外很多优秀的案例,比比皆是,Github就是使用ES搭建,危机百科的核心基础也是ES,百度目前也官方使用ES作为文本数据分析,每天处理30TB的数据。
  • 我们也可以有?
    我们必须可以有,今年ElasticSearch发展飞速,已经超越其最初的搜索引擎的角色定位,现在已经增加了数据聚合分析和可视化特性,如果你有数以亿计的文档需要通过关键词定位,ES肯定是最佳选择。当然你可以把他当缓存服务使用,一样优秀。
  • 什么场景使用ES?
    业务不对操作的事性务有特殊要求,权限也不需要非常细,因为ES的权限属于短板。我们不需要大量的原子操作,还有ES可以完美解决业务流程多版本聚合的问题。
c8a8dbe502f2a05fd6be06697c9cdad9.png

四、如何部署

  • 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

elasticsearch无门槛视频教程

结语: 该文章属于系列文章,笔者会持续更新,随后也会发SpringBoot2.0系列文章,还有SpringCloud Alibaba版本系列文章,大家可以持续关注。

关注:私信回复关键字:ES教程 获取资源!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值