ElasticSearch入门教程原理1

本文介绍了Elasticsearch的基本概念,包括其作为分布式搜索引擎的应用场景,逻辑和物理设计中的集群、节点、索引和文档。重点讲解了分片的概念、扩展策略、容灾机制以及索引和数据管理,特别是字段类型映射的重要性。
摘要由CSDN通过智能技术生成

es简介

基于Apache Lucene的开源分布式搜素引擎。

应用场景

  1. 日志记录和分析(接口调情况)
  2. 采集和组合公共数据(用户行为、点击事件)
  3. 全文检索(酒店搜索)
  4. 数据可视化(借助Kibana制作各种图表)

1. 理解逻辑和物理设计

1)集群(cluster):es是分布式的,由多个节点构成集群,集群具有很强扩展性。
2)节点(node):每个启动的es实例就是一个节点。 可以随时加入和脱离集群。
3)索引(index):名词:一堆字段相似的文档的集合,类似数据库的一张表;动词:将文档写入某个索引。
4)文档(document):一条es的记录。

分片

  • es处理的最小单元
  • 一个分片是一个lucene索引
  • 一个包含倒排索引的文件目录
  • 分片越多搜索越慢

分片的扩展

在这里插入图片描述

  • 一个索引的所有分片会自动均匀分布在所有节点中。
  • 加入新节点后,原集群中节点的分片,会部分迁移到新节点。
  • 设置分片数量稍微大于节点数量,有利于横向扩容时,分片蔓延到所有新节点(每个节点都有分片是最理想状态)。
  • 主分片和所有副本分片都就绪时,索引的健康状态是绿色。
    在这里插入图片描述

分片的容灾

在这里插入图片描述

  • 挂掉了n个节点时,如果副本分片是n,那么剩下的副本分片将自动提升为主分片。
  • 然后所有的主分片能构成完整的索引,但是副本分片缺失,此时索引健康状态是黄色。
  • 如果挂掉n+1个节点,主分片将缺失,健康状态是红色。
  • 根据实际情况设置副本数量(副本太多会影响性能)。
  • 通常同时挂掉两个的概率不高,1个副本可以满足常规容灾要求。

索引和搜索数据

在这里插入图片描述

分段

  • lucene索引再分割成小单元
  • 分段越多搜索越慢
  • 分段不会被修改
  • 索引新的文档会创建新的分段
  • 分段会持续地合并(像小水滴变成大水滴)
  • 删除文档的时候不会真的删除(只是标记)

在这里插入图片描述
n个分段会构成1个分片,图中大块的是分片,小块的是分段。

索引分片不是免费的吗?

  • 每个索引和分片都会产生一定的资源开销
  • 每个索引,映射和状态的相关信息都存储在集群状态中
    • 存储在内存中,以便快速访问
    • 分片数量过多,会导致集群状态过大
    • 这会导致更新变慢,因为所有更新都需要通过单线程完成,从而在将变更分发到整个集群之前确保一致性
  • 分片有一部分数据需要保存在内存中
    • 这部分数据也会占用堆内存空间
    • 这包括存储分片级别以及段级别信息的数据结构
    • 因为只有这样才能确定数据在磁盘上的存储位置
  • 在单个节点上存储尽可能多的数据
    • 管理堆内存使用量
    • 尽可能减少开销
    • 节点的堆内存空间越多,其能处理的数据和分片就越多

官方建议

  • JVM heap每1G不超过20个分片
  • 每个分片大小在20G-40G

2. 索引、更新和删除数据

字段类型映射(mapping)

  • 类似数据库的字段类型定义,你定义了一个字段,就要指定一个类型。
  • 如果不指定字段类型,es在插入第一条数据时,会自动创建一个index,同时帮你创建映射。
  • 字段如果和定义的类型不匹配,会插入失败
    • 因此同一个字段不能有时候是字符串,有时候是数组
    • 最好提前定义映射而不是依赖自动
  • 字段的mapping配置中,除了指定类型,还可以为字段指定参数
    • analyzer:指定分析器
    • boost:指定字段的分值加成
  • 通过模板(template)创建索引
    • 除了每次创建index前,手动指定index的mapping和配置(类似数据库建表操作)
    • 新建一个index的时候,可以自动从模板里获取index的mapping以及其他的设置(分片、副本数等)
    • 这是非常常用的操作

字段类型

在这里插入图片描述
参考资料Elasticsearch入门教程实战,四天搞懂elasticsearch原理之1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值