Elasticsearch 入门到精通-(节点、集群、分片)

Elasticsearch是一个分布式搜索引擎,强调高可用性和可扩展性。其高可用体现在服务和数据冗余,即使部分节点故障,集群仍能正常工作。可扩展性则体现在数据分布和节点动态扩展。节点分为Master节点、DataNode、CoordinatingNode等角色,集群至少包含一个MasterNode和DataNode。分片包括主分片和副本分片,用于数据扩展和高可用。集群动态调整分片数量可应对数据增长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch 特性


ElasticSearch是一个高性能,高可用,易扩展的分布式搜索引擎。

其高可用体现在:

服务可用性:允许有节点停止服务,整个ElasticSearch集群必须正常对外提供服务(冗余节点)
数据可用性:允许部分节点丢失,但是数据不会丢失(冗余数据)
其可扩展性体现在:

请求量提升/数据的不断增长(将数据分布到所有节点上)(新增节点就能提供读写能力)
ElasticSearch分布式架构的好处

存储的水平扩容
提高可用性
ElasticSearch不同的集群通过名字不同来区分,默认名字是elasticsearch

可以通过修改配置文件,或者在命令行中 -E cluster.name = test 进行设定

一个分布式集群可以有一个或多个节点

一、节点


一个节点就是一个ElasticSearch的实例,本质上就是一个Java进程。

每个节点都有名字,通过配置文件,或者启动时候 -E node.name = node1指定

每一个节点在启动之后,会分配一个UID,保存在data目录下

Master eligible Node & Master Node
每个节点启动后,默认就是一个Master eligible节点(可以设置node.master:false 禁止),Master-eligible节点可以参与选主流程,成为Master节点

当第一个节点启动,它会将自己选举成Master节点

每个节点上都保存了集群的状态信息(所有节点信息,所有的索引和其相关的Mapping和Setting信息,分片路由信息),只有Master节点可以修改集群状态信息(任何节点修改会导致不一致,而且需要额外的锁控制)

Data Node
可以保存数据的节点,叫做Data Node,负责保存分片数据。在数据扩展上起到了至关重要的作用

Coordinating Node
负责接收Client请求,将请求分发到合适的节点,最终吧结果汇聚在一起

每个节点默认都起到了Coordinating Node的职责

Hot & Warm Node
本质上还是Data Node,根据不同的硬件配置,可以实现Hot & Warm架构,降低集群部署成本。

例如海量数据分析,就可以使用高硬件服务器,做Hot Node,处理海量日志

Machine Learning Node
负责跑机器学习Job,用来做异常检测

Tribe Node
Tribe Node 连接到不同的elasticSearch集群,并且支持将这些集群当成一个单独集群处理(5.3开始使用Cross Cluster Search处理)

配置节点类型
生产环境中一个节点应该设置单一的角色(意味着节点可以多角色)

节点类型配置参数默认值备注
master eligiblenode.mastertrue可以参加选主
datanode.datatrue存储数据
ingestnode.ingestTrueingest节点可以运行一些pipeline的脚本
Coordinating每个节点默认都是coordinating节点,设置其他类型全部为false
machine learningnode.mltrue(需要enable x-pack)机器学习

二、集群

        一个es集群必须包含至少一个主节点(masterNode)和一个数据节点(dataNode),一个节点可以同时为masterName和dataNode(默认不修改配置文件)可用于自己测试环境。

一个集群可配置多个masterNode,但是es集群中只使用一个masterNode,其他作为备用master节点,在当前masterNode节点挂了以后,备用masterNode自动启用。


三、分片


分片分为两种类型:主分片(Primary Shard)和副本分片(Replica Shard)

主分片:用以解决数据水平扩展的问题,通过主分片,可以将数据分布到集群内的所有节点上(主从复制)
主分片在索引创建时指定,后续不允许修改,除非reindex
一个分片是一个运行的Lucene实例
副本分片:用于解决数据高可用的问题,是主分片的拷贝(可以提高读吞吐量)
副本分片数,可动态调整
假设一个集群中有两个节点。movie索引的分片分布情况如下所示

PUT /movies
{
    "settings":{
        "number_of_shards":2,  //主节点
        "number_of_replicas":2  //副本节点
    }
}

elasticsearch是一个基于Lucene搜索引擎构建的开源分布式搜索和分析引擎。它被广泛用于构建实时搜索、日志分析、文档存储和大数据分析等应用。 要从入门精通elasticsearch,你可以按照以下步骤进行学习: 1. 安装与配置:首先,你需要下载并安装elasticsearch。然后,你可以根据你的需求进行配置,如设置集群节点、调整内存和磁盘限制等。 2. 索引与搜索:学习如何创建索引,将数据添加到elasticsearch中。你可以使用REST API或一些客户端库来进行索引和搜索操作。了解如何构建查询语句、使用过滤器、排序和分页等功能。 3. 映射与分析:深入了解elasticsearch的映射和分析功能。映射定义了索引中的字段类型和属性,而分析则负责对文本进行分词、处理和转换。学习如何创建自定义映射和分析器,以满足你的特定需求。 4. 聚合与分析:掌握elasticsearch的聚合功能,用于对索引中的数据进行统计、分组和计算。了解各种聚合类型,如词项聚合、范围聚合、日期直方图等,并学会使用聚合管道进行复杂的数据分析。 5. 高级特性:深入研究elasticsearch的一些高级特性,如倒排索引、分片和副本、分布式搜索、近实时搜索等。了解如何处理大规模数据集和高并发请求,以及如何优化性能和可靠性。 6. 监控与管理:学习如何监控elasticsearch集群的状态和性能,并进行适当的管理和维护工作。了解如何配置和使用监控工具,如Elasticsearch集群监控插件、Kibana等。 7. 故障排除与优化:掌握常见的elasticsearch故障排除技巧,如日志分析、错误处理和调优。学习如何识别和解决性能问题,如慢查询、内存溢出、磁盘使用过高等。 8. 生态系统与扩展:了解elasticsearch的生态系统,并探索一些常用的扩展工具和库,如Logstash、Kibana、Beats等。学习如何与其他技术栈集成,如使用elasticsearch作为后端存储的应用程序等。 以上是elasticsearch入门精通的大致路径,你可以根据自己的兴趣和需求进行深入学习和实践。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值