分布式搜索服务ElasticSearch(7)

网友投稿 729 2022-05-29

Gateway层:代表elasticsearch索引快照的存储方式,ElasticSearch默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当ElasticSearch集群关闭再重新启动时就会从gateway中读取索引备份数据。ElasticSearch支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

Distributed Lucene Directory层:Gateway上层就是一个lucene的分布式框架,lucene是做检索的,但是它是一个单机的搜索引擎,像这种ElasticSearch分布式搜索引擎系统,虽然底层用lucene,但是需要在每个节点上都运行lucene进行相应的索引、查询以及更新,所以需要做成一个分布式的运行框架来满足业务的需要。

ElasticSearch 四大模块:

(1)Index Module是索引模块,对数据建立索引也就是通常所说的建立一些倒排索引等;

(2)Search Module是搜索模块,就是对数据进行查询搜索;

(3)Mapping模块是数据映射与解析模块,就是数据的每个字段根据建立的表结构通过mapping进行映射解析,如果没有建立表结构,ElasticSearch就会根据数据类型推测数据结构之后自己生成一个mapping,然后根据这个mapping进行数据解析;

(4)River模块代表ElasticSearch的一个数据源,也是其它存储方式(如:数据库, 官方的river有couchDB、RabbitMQ、Twitter、Wikipedia等)同步数据到ElasticSearch的一个方法。它是以插件方式存在的一个ElasticSearch服务,通过读取river中的数据并把它索引到ElasticSearch中。

Discovery层:该模块主要负责集群中节点的自动发现和Master节点的选举。节点之间使用p2p的方式进行直接通信,不存在单点故障的问题。ElasticSearch中,Master节点维护集群的全局状态,比如节点加入和离开时进行shard的重新分配。

Script层:ElasticSearch查询可以支撑多种script(即脚本语言),包括 mvel、js、python等。

Transport层:代表ElasticSearch内部节点或集群与客户端的交互方式,默认内部是使用TCP协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

Restful接口层:最上层是ElasticSearch暴露给我们的访问接口,官方推荐的方案就是Restful接口,直接发送http请求,方便后续使用nginx做代理、分发包括可能后续会做权限的管理,通过http很容易做这方面的管理。

分布式搜索服务ElasticSearch(7)

Elasticsearch 分布式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MacOS启用器Hapigo 2.0:主题更丰富,效率更提升
下一篇:C++ 二进制文件 & 顺序读写
相关文章