Elasticsearch详解

Elasticsearch是什么

Elasticsearch是使用Lucene 为基础建立的开源可用全文搜索引擎,它可以快速地储存、搜索和分析海量数据

Elasticsearch的特点和传统的关系数据库对比
  • 关系型数据库查询性能,数据量超过百万级千万级之后下降厉害,本质是索引的算法效率不行,B+ 树算法不如倒排索引算法高效。
  • 关系型数据库索引最左原则限制,查询条件字段不能任意组合,否则索引失效,相反 Elasticserach 可以任意组合,此场景在数据表关联查询时特别明显
  • 关系型数据库聚合性能低下,数据量稍微多点,查询列基数多一点性能下降很快,Elasticsearch 在聚合上采用的是列式存储,效率极高。
  • 传统数据库更均衡,拥有事务隔离机制
  • Elasticsearch 在数据分析领域,产品能力偏弱一些,简单通用的场景需求可以大规模使用,不适合复杂聚合、大规模 Rollup(可以将某些索引中的数据进行周期性自定义化聚合,然后将聚合后的数据写入到新的索引中,整个流程叫做 Rollup,从而减少存储空间和计算资源的消耗)、大规模的 Key-Value。
  • Elasticsearch对结果支持相关度排序,支持高亮显示等。
Elasticsearch核心概念
  • **Cluster:**集群,由一个或多个 Elasticsearch 节点组成。

  • **Node:**节点,组成 Elasticsearch 集群的服务单元,同一个集群内节点的名字不能重复。通常在一个节点上分配一个或者多个分片。

  • **Shards:**分片,当索引上的数据量太大的时候,我们通常会将一个索引上的数据进行水平拆分,拆分出来的每个数据库叫作一个分片。在一个多分片的索引中写入数据时,通过路由

    shard = hash(routing) % number_of_primary_shards

    来确定具体写入那一个分片中,所以在创建索引时需要指定分片的数量,并且分片的数量一旦确定就不能更改。

    分片后的索引带来了规模上(数据水平切分)和性能上(并行执行)的提升。每个分片都是 Luence 中的一个索引文件,每个分片必须有一个主分片和零到多个副本分片。

    对文档的新建、索引和删除请求都是写操作,必须在主分片上面完成之后才能被复制到相关的副本分片。所有的副本分片都报告写成功才会向客户端报告成功

  • **Replicas:**备份也叫作副本,是指对主分片的备份。主分片和备份分片都可以对外提供查询服务,写操作时先在主分片上完成,然后分发到备份上。

    当主分片不可用时,会在备份的分片中选举出一个作为主分片,所以备份不仅可以提升系统的高可用性能,还可以提升搜索时的并发性能。但是若副本太多的话,在写操作时会增加数据同步的负担。

  • **Index:**索引,由一个和多个分片组成,通过索引的名字在集群内进行唯一标识。

  • **Type:**类别,指索引内部的逻辑分区,通过 Type 的名字在索引内进行唯一标识。在查询时如果没有该值,则表示在整个索引中查询。

  • **Document:**文档,索引中的每一条数据叫作一个文档,类似于关系型数据库中的一条数据通过 _id 在 Type 内进行唯一标识。

  • **Settings:**对集群中索引的定义,比如一个索引默认的分片数、副本数等信息。

  • **Mapping:**类似于关系型数据库中的表结构信息,用于定义索引中字段(Field)的存储类型、分词

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久梦歌行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值