自用华为ICT云赛道Big Data第六章知识点-分布式搜索服务ElasticSearch

ElasticSearch简介

  • ElasticSearch是一个高性能,基于Lucene的全文检索服务,是一个分布式的Restful风格的搜索和数据分析引擎,也可以作为NoSQL数据库使用。
    • 对Lucene进行了扩展
    • 原型环境和生产环境可无缝切换
    • 能够水平扩展
    • 支持结构化和非结构化数据

ElasticSearch特点

ElasticSearch应用场景

  • 用于日志搜索和分析、时空检索、时序检索、智能搜索等场景。
    • 检索的数据类型复杂:如需要查询的数据有结构化数据、半结构化数据、非结构化数据等,ElasticSearch可以对以上数据类型进行清洗、分词、建立倒排索引等一系列操作,然后提供全文检索的能力。
    • 检索条件多样化:全文检索条件可以包括词或短语。
    • 边写边读:写入的数据可以实时的进行检索。

ElasticSearch生态圈

  • ELK/ELKB提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。

ElasticSearch系统架构

ElasticSearch内部架构

  • 通过RESTfulAPI或者其他语言(比如Java)API提供丰富的访问接口。
  • 集群发现机制。
  • 支持脚本语言。
  • 底层基于Lucene,保持Lucene
  • 绝对的独立性。
  • 通过本地文件、共享文件、HDFS完成索引I存储。

ElasticSearch核心概念

  • Index
    • 索引,是ElasticSearch中一个逻辑命名空间。
  • Type
    • 文档类型,用于存储不同类型的文档。ElasticSearch7已删除Type
  • Document
    • 文档,是可以被索引的基本单位。
  • Mapping
    • 映射,用来约束字段的类型。
  • Cluster
    • 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
  • EsNode
    • ElasticSearch节点,一个节点就是一个ElasticSearch实例。
  • EsMaster
    • 主节点,可以临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,在流量增长时,该主节在流量增长时,该主节点不会成为集群的瓶颈。
  • shards
    • 代表索引分片,ElasticSearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。
  • replicas
    • 代表索引副本,ElasticSearch可以设置多个索引I的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高ElasticSearch的查询效率,ElasticSearch会自动对搜索请求进行负载均衡。
  • Recovery
    • 代表数据恢复或叫数据重新分布,ElasticSearch在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
  • GateWay
    • 代表ElasticSearch索引快照的存储方式,ElasticSearch默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。GateWay对索引快照进行存储,当这个ElasticSearch集群关闭再重新启动时就会从GateWay中读取索引备份数据。ElasticSearch支持多种类型的GateWay,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
  • Transport
    • 代表ElasticSearch内部节点或集群与客户端的交互方式,默认内部是使用TCP协议进行交互,同时它支持http协议(Json格式)、Thrift、Servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

ElasticSearch倒排索引

  • 正排索引:是通过Key寻找Value,即从关键点出发,然后再通过关键点找到信息中满足搜索条件的特定信息。
  • 倒排索引:ElasticSearch所采用得排序方式,是通过Value找Key。而在全文搜索中Value就是要搜索的关键词,通过Value找到对应的文档。

ElasticSearch访问接口

  • ElasticSearch可通过RESTful请求来对数据进行操作。请求分5种:GET、POST、PUT、DELETE、HEAD,以实现对文档和索引增删改查。

ElasticSearch路由算法

  • Elasticsearch中提供了两种路由算法:
    • 默认路由:shard=hash(routing)%number_of_primary_shards,这里路由策略扩展受到shards个数的限制,扩容的时候需要成倍扩容(ES6.x),并且在创建index的时候要指定未来允许扩容的规模。ES5.x不支持扩容;ES7.x可以自由扩容。
    • 自定义路由:该路由方式,通过指定routing的方式,可以影响文档写入到哪个shard,也可以仅仅检索特定的shard。

ElasticSearch平衡算法

  • Elasticsearch中提供了自动平衡功能
  • 适用场景:扩容、减容、导入数据场景
  • 算法如下:
    • weight_index(node, index) = indexBalance * (node.numShards(ndex) - avgShardsPerNode(index)
    • Weight_node(node, index) = shardBalance * (node.numShards() - avgShardsPerNode)
    • weight(node, index) = weight_index(node, index) + weight_node(node, index)

ElasticSearch扩容

  • 扩容场景:
    • 物理资源消耗过大,即ElasticSearch的服务节点的CPU、内存占用率过高、磁盘空间不足
    • ElasticSearch单实例的索引数据太大,索引的数目达到1o亿条或是数据大小达到1TB。
  • 扩容方式:
    • 增加EsNode实例。
    • 增加节点,在新节点增加EsNode实例。
  • 扩容后,采用自动均衡策略。

ElasticSearch减容

  • 减容场景:
    • 节点需要重新安装操作系统。
    • 集群数据量减少。
    • 退服场景。
  • 减容方式:
    • 在CloudSearchService管理界面上删除ElasticSearch实例。
  • 减容注意事项:
    • 确保要删除的实例上的shard下的replica在其他实例存在。
    • 确保要删除的实例上的数据已经迁移到其他节点。

ElasticSearch索引|HBase数据

  • Elasticsearch索引lHBase数据是HBase数据写入的同时,在Elasticsearch建立相应的HBase索引I数据。其中索引lid与HBase数据的rowkey对应,保证每条索引l数据与HBase数据的唯一,实现HBase数据的全文检索。
  • 批量索引:针对HBase中已有的数据,通过提交MR任务的形式,将HBase中的全部数据读出,然后在Elasticsearch中建立索引。

ElasticSearch单节点多实例部署

  • 在同一个节点上部署多个Elasticsearch实例,根据IP和不同的端口号来区分不同的Elasticsearch实例。可以提高单节点CPU、内存和磁盘的利用率,同时提高Elasticsearch的索引和搜索能力。

ElasticSearch副本自动跨节点分配策略

  • 单节点多实例部署下,多副本时,如果只做到跨实例分配,存在单点故障,增加默认配置cluster.routing.allocation.same_shard.host:true即可。

ElasticSearch其他特性

  • HBase全文索引特性
    • 通过建立HBase表和ElasticSearch索引l的映射关系,支持索引存储ElasticSearch,而原始数据存储HBase。通过HBase2ES工具离线索引。
  • 加密鉴权特性
    • 对于安全集群,支持对ElasticSearch访问的加密和鉴权。

缩略语

  • JMX: Java Management Extensions, Java管理扩展
  • NoSQL:Not Only SQL,非关系型数据库
  • ELK:Elasticsearch Logstash Kibana,三个开源软件的缩写
  • Es:ElasticSearch,分布式全文检索
  • HTTP:Hyper Text Transfer Protocol,超文本传输协议
  • Js:JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言
  • Doc:Document,文档
  • CPU:Central Processing Unit,中央处理器
  • ELKB:Elasticsearch Logstash Kibana Beats,四个开源软件的缩写
相关推荐
ywyy679816 分钟前
短剧系统开发定制全流程解析:从需求分析到上线的专业指南
大数据·需求分析·短剧·推客系统·推客小程序·短剧系统开发·海外短剧系统开发
暗影八度2 小时前
Spark流水线数据质量检查组件
大数据·分布式·spark
白鲸开源2 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据
海豚调度2 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据·人工智能·ai·开源
白鲸开源3 小时前
DolphinScheduler+Sqoop 入门避坑:一文搞定数据同步常见异常
大数据
学术小八4 小时前
第二届云计算与大数据国际学术会议(ICCBD 2025)
大数据·云计算
求职小程序华东同舟求职4 小时前
龙旗科技社招校招入职测评25年北森笔试测评题库答题攻略
大数据·人工智能·科技
Fanmeang6 小时前
OSPF路由过滤
运维·网络·华为·ip·路由·ospf·路由过滤
周胡杰7 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统