ElasticSearch为什么快

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 。它转发请求到 Node 3 ,分片 0 位于这个节 点上。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值