ES框架以及检索原理实现

  ES存储存储基于lucene实现,lucene是Apacha软件基金的一个开源子项目,是一套全文检索引擎架构,提供了完整的文本分析引擎、数据查询引擎和数据索引引擎。

  1、lucene是一个高并发、高吞吐、可扩展的全文检索库。整体框架如下图所示。

 

 

  lucene的全文索引主要包括索引创建和索引查询两个部分。数据进入lucene时先创建倒排索引。搜索数据直接根据倒排索引查询数据。

  (1)索引创建流程:获取文档、构建文档对象、文档分词、创建索引

 

    (2)索引查询流程:根据关键字查询索引、根据索引查找具体文档、从而找到要查询的内容。

 

 2、ES数据模型

  ES的数据模型由Index(索引)、Type(类型)、Document(文档)组成。每个索引包含多个类型,每个类型包含多个文档,每个文档包含多个Field

 

 

3、ES分布式架构

(1)节点类型

ES集群包括MasterNode(主节点)、DataNode(数据节点)、IngestNode(提取节点)、CoordinatingNode(协调节点)和TribeNode(部落节点)

 

4、ES写数据流程

  ES写数据主要包括索引的创建、删除,文档的创建、删除、更新等操作。ES会首先在主分区上执行写操作,当主分区执行成功后,根据一致性要求,会在其他副本分区执行操作,主有达到一致性要求的几点都执行成功后才会向客户端发送成功响应。

 

 

 

 

5、ES读数据流程

   ES处理读请求时,协调节点会轮询所有副本分片来达到负载均衡。

 

6、ES中的translog

  ES的事务日志文件为translog,translog记录了与更新相关的事务操作日志。每一个分片都对应一个translog。ES写数据时不是直接写入磁盘,而是同时写入内存和translog中。

 

 

posted on 2022-02-15 18:04  1450811640  阅读(1173)  评论(0编辑  收藏  举报