elasticsearch原理剖析

Elasticsearch是一个实时、分布式搜索和分析引擎,使用Lucene作为内部引擎。它具有分布式、弹性、容错性和高效搜索能力。在Master-Slave架构中,Master节点负责管理集群,而P2P架构则无中心节点。ES的核心概念包括集群、节点、索引、主分片和副本分片等。其采用倒排索引进行快速搜索,优点在于速度、灵活性和分布式的高可用性。集群通过ZenDiscovery进行服务发现和Master选举,避免脑裂现象。默认搜索方式是Query Then Fetch,分两阶段进行。在单节点集群中不能有副本,集群的恢复和容灾主要依赖于节点的自动恢复和discovery.zen.minimum_master_nodes设置。
摘要由CSDN通过智能技术生成

elasticsearch原理


Master/Slave架构 VS P2P 环形结构

  • Master-Slave
    master 节点负责管理整个系统,监视 slave 节点的运行状态,同时为其下的每一个 slave 节点分配存储的范围,是查询和写入的入口.master 节点一般全局只有 1个,该节点的状态将严重影响整个系统的性能,当 master 节点宕机时,会引起整个系统的瘫痪.实践中,经常设置多个副本 master 节点,通过联机热备的方式提高系统的容错性.

  • P2P 环形结构
    P2P结构中没有master节点

Master-Slave结构的系统设计简单,可控性好,但 master
中心节点易成为瓶颈(bigtable为master节点不成为瓶颈做了很多措施);P2P环形结构的系统无中心节点,自协调性好,扩展方便,但可控性较差,且系统设计比master-slave 结构的系统要复杂.

Hbase,bigtable,es和HDFS一样采用master/slave架构。

hbase存多读少,不适合高并发查询,适合存数据; es是全文检索,适合日志分析日志统计之类。

es概述

ES 在 Master 被选举之前是一个 P2P 的系统,但是当 Master 被选取后,它的管理本质上是 Master 和 slave的模式。

Elasticsearch 看名字就能大概了解下它是一个弹性的搜索引擎。首先弹性隐含的意思是分布式,单机系统是没法弹起来的,然后加上灵活的伸缩机制,就是这里的 Elastic 包含的意思。它的搜索存储功能主要是 Lucene 提供的,Lucene 相当于其存储引擎,它在之上封装了索引,查询,以及分布式相关的接口。

Elasticsearch是一个实时(索引数据到能被搜索大概1s左右)的分布式搜索和分析引擎,主要用于全文搜索,结构化搜索以及分析。Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理,可以说是一个开箱即用的分布式实现,其内部定义了大量的默认值。Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:

  1. 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

  2. 实时分析的分布式搜索引擎。

  3. 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

ES提供了两套API(内部调用都指向同一个地方)分别是基于curl的rest API和Java API,通过API不仅能对数据的CURD进行处理,还能对索引及es集群进行关联

es的基本概念

Elasticsearch的底层搜索是以lucene来实现的。es其主要是提供了一个分布式的框架来扩展了lucene,从而实现大数据量的,分布式搜索功能。其实现思想很简单,将大数据量分而治之,哈希分成多份,然后对每一份进行“lucene处理”——用lucene索引、检索,最后将每份结果合并返回。

image.png-63.1kB

Lucene中包含了四种基本数据类型,分别是:
Index:索引,由很多的Document组成。
Document:由很多的Field组成,是Index和Search的最小单位。
Field:由很多的Term组成,包括Field Name和Field Value。
Term:由很多的字节组成。一般将Text类型的Field Value分词之后的每个最小单元叫做Term。

image.png-6.7kB

es 中的几个核心概念

  • 集群(Cluster)一组拥有共同的 cluster name 的节点。
  • 节点(Node) 集群中的一个 Elasticearch 实例。
  • 索引(Index) 相当于关系数据库中的database概念,一个集群中可以包含多个索引。这个是个逻辑概念。
  • 主分片(Primary shard) 索引的子集,索引可以切分成多个分片,分布到不同的集群节点上。分片对应的是 Lucene 中的索引。
  • 副本分片(
  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值