赞
踩
作者:南墨
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速、近实时地存储、搜索和分析大量数据。它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。Elasticsearch服务的主要组成部分如图3-1所示。
对Elasticsearch Nodes进行了种类划分:EsMaster、EsNode1~9和EsClient。在安全模式下Elasticsearch具备基于用户/角色划分的安全认证与鉴权功能。
集群服务职责规划:
本文重点关注的是Elasticsearch写入索引和查询数据的性能问题,基于以上的组件框架图,下面来了解一下Elasticsearch写入索引和查询索引数据的具体流程。
写入索引流程如图3所示。
过程描述:
Elasticsearch查询流程分为两个阶段,即查询(query)阶段与提取(fetch)阶段。
查询阶段流程如图所示。
过程描述:
查询阶段主要定位了所要检索数据的具体位置,而提取阶段的任务就是将这些定位好的数据内容取回并返回给客户端。提取阶段如下图所示。
过程描述:
Index:即索引,是Elasticsearch中一个逻辑命名空间,指向一个或多个分片,内部Apache Lucene实现索引中数据的读写。索引与关系数据库实例Database相当。一个Elasticsearch实例可以包含多个索引。
Type:文档类型,文档类型使得同一个索引中在存储结构不同的文档时,只需要依据文档类型就可以找到对应的参数映射信息,方便文档的存储。相当于数据库中的Table。一个索引对应一个文档类型。
Document:文档,是可以被索引的基本单位,特指最顶层结构或根对象序列化成的JSON数据。相当于数据库中的Row。一个类型包含多个文档。
Mapping:映射,用来约束字段的类型,可以根据数据自动创建。相当于数据库中的Schema。
Primary Shard:主分片,索引中的每个文档属于一个单独的主分片,主分片的数量决定了索引最多能存储多少数据。
Rreplica Shard:即复制分片,它是主分片的一个副本,可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。
Segments:Lucene index是由许多segments构成,每个segment都是一个write-once,read many times(类似于HDFS文件,写完后不可修改)。每个segment都是一个小的Lucene index。Segment merge就是利用多个小的segments来合并为一个大的、新的segment的过程,新的segment包含有旧的segments。每次merge消耗资源大,因为lucene要重写它。在删除docement的过程中,其实Lucene只是将该document标记为deleted,然后在segment merge的过程中,被标记为deleted的docment会从物理上移除。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。