浅入浅出之- ElasticSearch

概述

ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES的底层依赖Lucene,Lucene可以说是当下最先进、高性能、全功能的搜索引擎库。Elasticsearch使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

实现原理

当ElasticSearch的节点启动后,它会利用多播(multicast)(或单播)寻找集群中的其它节点,并与之建立连接。

核心概念

  • 集群:ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。
  • 节点:形成集群的每个服务器称为节点。
  • 分片:当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。 
  • 当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。
  • 副本:为提高查询吞吐量或实现高可用性,可以使用分片副本。 副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。
  • 全文检索:全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。 全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token,这样当你搜索“你们” 或者 “激情” 都会把这句搜出来

架构:

ES集群的HA不需要依赖任务外部组件(例如Zookeeper、HDFS等),master节点的主要依赖于内部自建的选举算法,通过副本分片的方式实现了数据的备份的同时,也提高了并发查询的能力。ES集群的服务器分为以下四种角色:

  • 列表项目master节点,负责保存和更新集群的一些元数据信息,之后同步到所有节点,所以每个节点都需要保存全量的元数据信息;
  • datanode:负责数据存储和查询;
  • coordinator:负责路由索引请求,聚合搜索结果集,分发批量索引请求;
  • ingestor:对输入数据进行处理和转换;

数据副本

ES通过副本分片的方式,保证集群数据的高可用,同时增加集群并发处理查询请求的能力,相应的,在数据写入阶段会增大集群的写入压力。数据写入的过程中,首先被路由到主分片,写入成功之后,将数据发送到副本分片,为了保证数据不丢失,最好保证至少一个副本分片写入成功以后才返回客户端成功。

数据查询过程

  • 协调节点将请求发送给对应分片
  • 分片查询,返回from+size数量的文档对应的id以及每个id的得分
  • 汇总所有节点的结果,按照得分获取指定区间的文档id
  • 根据查询需求,像对应分片发送多个get请求,获取文档的信息
  • 返回给客户端

希望能对你有所帮助,我是热爱互联网的高飞,如有疑问,欢迎评论,希望能与你一起讨论,当然也期待点个赞以示鼓励啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值