ElasticSearch为什么快

ElasticSearch作为分布式搜索引擎,其快的原因在于近实时搜索和文档写入速度。通过索引、分片、副本和事务日志实现高效的数据处理。倒排索引和分析过程确保全文检索的性能。此外,通过设置索引别名和调整刷新频率等优化策略,进一步提升系统性能。
摘要由CSDN通过智能技术生成

ElasticSearch是分布式搜索引擎,可以存储、检索、搜索、统计数据。
那使用ES主要原因是:1、全文检索 2、快

这篇文章主要讲解为什么快?
首先明确ElasticSearch快在搜索是近实时的,文档的CRUD也是实时的。

一、ES的基本架构图及基础概念:

在这里插入图片描述

  • Index 索引
    ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。
    它是个逻辑命名空间,类似于数据库概念中的数据库

  • Type 类型
    类型是索引内部的逻辑分区(category/partition),然而其意义完全取决于用户需求。因此,一个索引内部可定义一个或多个类型(type)。
    类似于数据库概念中的一张

  • **Document 文档 **
    文档是索引和搜索的原子单位,它是包含了一个或多个域(Field)的容器,基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。
    每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。
    它是具体事实数据的体现,类似于数据库概念中的 一条记录

  • SHARD 分片
    • index包含多个shard,每个shard都是一个最小工作单元,承载部分数据
    • 每个shard都是一个lucene实例,有完整的建立索引和处理请求的能力。
    • 增减节点时,shard会自动在nodes之间负载均衡
    • shard分为primary shard和replica shard,每个document只存在于某一个primary shard以及其对应的replica shard中
    • replica shard是primary shard的副本,负责容错,以及承担读请求负载提高搜索性能。
    • primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改,primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard

  • translog
    事务日志,在每一次对 Elasticsearch 进行操作时均进行了日志记录。作为临时文件存储在硬盘上。理想中应该是任何一次写入都刷入磁盘,但是性能考虑不可能。实际上是每几秒中调用一次fsync刷到磁盘来提高吞吐量。这当然带来了丢失数据的可能。

二、文档写入速度快

1、当Client有一个writing request时,ES cluster接受到request之后是如何运作的
首先明确新建、索引和删除请求都是写(write)操作,它们必须在主分片上成功完成才能复制到相关的 复制分片上。复制分片只能负载读请求。

其中ES如何决定文档去存在哪个主分片上呢?
进程不能是随机的,因为我们将来要检索文档。其实是由一个简单的算法决定:

shard = hash(routing) % number_of_primary_shards

routing 值是一个任意字符串,它默认是 _id 但也可以自定义
在这里插入图片描述
下面我们罗列在主分片和复制分片上成功新建、索引或删除一个文档必要的顺序步骤:

  1. 客户端给 Node 1 发送新建、索引或删除请求。
  2. 节点使用文档的 _id 确定文档属于分片 0 。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值