深入了解Elasticsearch集群:Elasticsearch集群的工作原理与优化策略

news2024/9/30 1:41:25

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

引言

ELasticsearch作为一个分布式搜索引擎,能够出色地支持集群模式、动态水平扩容、故障转移等分布式系统特性,这是其作为全文搜索引擎首选的重要原因,今天我们就来看看集群的配置和扩容过程,让你Elasticsearch集群的工作原理彻底理解。

文章目录

  • 引言
  • 一、集群配置
    • 1.1 空集群
    • 1.2 单节点集群
    • 1.3 两节点集群
  • 二、水平扩容
    • 2.1 主分片的扩容
    • 2.2 副本分片的扩容
  • 三、故障转移
  • 四、分布式索引和搜索

一、集群配置

Elasticsearch集群的配置是确保其稳定运行的基础。下面我们将介绍不同类型的Elasticsearch集群配置,并包含代码介绍以及使用。

1.1 空集群

空集群是指没有存储任何数据的集群。在实际应用中,我们通常会通过添加节点来构建空集群。

# 初始化集群
bin/elasticsearch -Des.cluster.name=my-empty-cluster

当我们启动了一个Elasticsearch节点,默认就是创建了一个Elasticsearch集群,只是这个集群只有一个节点。此时如果没有创建索引,则集群处于一种"空"的状态。

在这里插入图片描述

此时通过_cluster API查看集群状态,可以看到status为green,节点数量number_of_nodes为1,数据节点数量number_of_data_nodes也为1,因为没有创建索引,所以分片数目为0。

  • 而status字段指示着当前集群在总体上是否工作正常

  • 以下是他的三种含义

  • green 所有的主分片和副本分片都正常运行

  • yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行。

  • red 有主分片没能正常运行。

而我们上面创建的空集群当前不存在主分片也不存在副本分片没正常运行的,通过_cluster API查看集群状态时所显示的状态为green。

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

1.2 单节点集群

单节点集群是最简单的集群形式,它由单个Elasticsearch节点组成。这种集群适用于开发和测试环境,但不建议用于生产环境。

# 启动单节点集群
bin/elasticsearch -Des.cluster.name=my-single-node-cluster

为当前集群添加索引,指定主分片数量为3,副本分片数量为1

$ curl -X PUT "localhost:9200/cumstomer?pretty" -H 'Content-Type: application/json' -d'
{
   "settings" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 1
   }
}
'

在这里插入图片描述

此时再次查看集群的状态可以看到此时活动的主分片数量为3,未分片的分片数量也为3,未分配的分片主要是三个主分片对应的副本分片,由于主分片与副本分片不能存在于同个节点,所以副本分片无法分配,此时集群的状态为yellow。

{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 3,
  "active_shards" : 3,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 3,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.0
}

1.3 两节点集群

两节点集群是由两个Elasticsearch节点组成的。这种集群可以提供基本的冗余和故障转移能力,适用于小型生产环境。

# 启动第一个节点
bin/elasticsearch -Des.cluster.name=my-two-node-cluster
# 启动第二个节点,确保与第一个节点的网络可以互相通信

二、水平扩容

水平扩容是Elasticsearch集群的一个重要特性,它允许我们通过添加更多节点来增加集群的性能和容量。

2.1 主分片的扩容

主分片是Elasticsearch中数据的主要副本。扩容主分片可以通过增加新节点来实现,从而提高集群的存储和处理能力。

# 创建索引时指定主分片数量
curl -X PUT "localhost:9200/my-index?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3
  }
}'

2.2 副本分片的扩容

副本分片是主分片的备份,用于提供数据冗余和故障转移。通过扩容副本分片,我们可以增加集群的可用性和可靠性。

# 创建索引时指定副本分片数量
curl -X PUT "localhost:9200/my-index?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_replicas": 2
  }
}'

三、故障转移

故障转移是Elasticsearch集群在面对节点故障时的关键特性。它确保了即使在节点失效的情况下,集群也能继续正常运行。

# 重启节点,使其加入已存在的集群
bin/elasticsearch -Des.cluster.name=my-cluster -Des.node.name=new-node

四、分布式索引和搜索

Elasticsearch集群的一个核心特性是分布式索引和搜索。通过分布式索引,我们可以将数据均匀地分布到集群中的所有节点上。而分布式搜索则允许我们跨多个节点执行搜索操作,从而获得更高的查询性能。

# 创建文档并索引
curl -X POST "localhost:9200/my-index/_doc" -H 'Content-Type: application/json' -d'
{
  "field1": "value1",
  "field2": "value2"
}'
# 执行搜索操作
curl -X GET "localhost:9200/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match_all": {}
  }
}'

以上就是这篇文章的全部内容,希望这篇文章能帮助您对Elasticsearch集群的工作原理有一个全面的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二证券:什么是股票打板?怎么打板?

打板,指的是在股价即将涨停或许涨停之后再进行挂单介入,不涨停不进入,股票打板寻求的是出资更大的确认性。 打板的步骤: 1、复盘并对下一个交易日行情进行判别 出资者能够把其时交易日的商场条理树立清楚,找出主线板…

PWM驱动电机系列——PID控制 (各电机设备之间的驱动差异及区别)自动控制系统的性能指标

电机驱动 直流电机:类似于驱动LED亮灭一样,根据电机的电路原理图判断是什么数字电平有效。 步进电机:类似于驱动LED的周期翻转一样,在一个周期里面进行对步进电机的IO电平的自动翻转,LED!LED 。(1)使用的定时器方式&…

C#/WinForm实现炸弹人游戏

游戏类设计 代码地址(gitee):炸弹人游戏: WinForm实现炸弹人游戏

开源大屏设计工具DataRoom

DataRoom是一个开源项目,主要作为一个数据共享与协作平台,同时也具备大屏可视化设计器的功能。 开源地址:DataRoom: 🔥基于Vue的大屏可视化设计器,前后端一体化解决方案,几十种炫酷图表,支持多种…

曝光无线领夹麦克风选购五大陷阱:选麦克风谨防音质粗劣夸大宣传

在移动录制与现场直播日益普及的时代背景下,无线领夹麦克风成为了众多专业人士与爱好者的首选装备。但在这个看似大热的市场背后,却隐藏着不少消费者难以察觉的“坑”。部分品牌为了抢占市场份额,不惜以牺牲品质为代价,通过夸大宣…

如何使用cornerstone3D渲染3D影像

🍓 前言 在日常开发中经常会遇到除了渲染MPR视图外,还需要渲染3D扫描影像,本文从具体的实现、viewport type解读、场景预设等方面来介绍3D具体的实现及涉及到的相关概念。 🥑 效果演示 点击查看完整代码 🍒 实现及概…

ArcMap教程(01):制作人口专题图

文章目录 01、ArcGIS专题图制作第一步:插入数据框第一步:加载人口分级地图第二步:添加范围指示器第三步:修改样式1、添加标题2、添加比例尺3、添加指北针4、插入图例01、ArcGIS专题图制作 第一步:插入数据框 1、工具栏【插入】–>【数据库】 2、选中图层下的【宜昌市…

Python酷库之旅-第三方库Pandas(092)

目录 一、用法精讲 391、pandas.Series.hist方法 391-1、语法 391-2、参数 391-3、功能 391-4、返回值 391-5、说明 391-6、用法 391-6-1、数据准备 391-6-2、代码示例 391-6-3、结果输出 392、pandas.Series.to_pickle方法 392-1、语法 392-2、参数 392-3、功能…

token令牌,过滤器,JWT,拦截器

令牌(token)技术 不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了 1.基本流程 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token&#…

大模型学习笔记 - LLM 之 LLaMA系列(待更新)

LLaMA 系列 LLaMA 概述 LLaMA-1LLaMA-2LLaMA-3 LLaMA 概述 LLaMA: Open and Efficient Foundation Language Models Llama 2: Open Foundation and Fine-Tuned Chat Models (LLama2 & LLama2-Chat) LLama 3 | LLama 3.1 LLaMA-1 涉及到的基础知识点: pre-normalizat…

Leetcode面试经典150题-25.K个一组反转链表

解法都在代码里,不懂就留言或者私信 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val …

基于java图书销售管理系统设计与实现

1引言 随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强大的&…

利用API返回值实现商品信息的自动化更新

利用API返回值实现商品信息的自动化更新是一个涉及到数据交互、数据处理和自动化脚本编写的任务。以下是一个基本的步骤指南,帮助你实现这一过程: 1. 确定API接口 首先,你需要确定能够提供商品信息的API接口。这通常是由商品数据提供商&…

2024年培训服务行业CRM研究报告

国家实行“双减”政策后,很多教培企业慢慢淡出了公众的视野,很多人觉得,教培行业怕是要日薄西山了。 但如果你了解了培训服务行业到底有多庞大,你就会立即改变自己的想法。 从2017年起,中国职业培训机构的年注册量超…

X86架构基础

X86目前的架构有32位和64位两种,不同的架构支持的运行模式也是不一样的,64位的基本能兼容32位。64位是X86架构的主流,本文内容默认以64位位基础。X86平台目前的支持的运行模式有以下几种: 1、实模式:这是最早的X86运行…

ue5远程渲染和本地渲染的区别,及云渲染的联系

UE5这款引擎以其令人惊叹的渲染能力,为游戏开发者们打开了一扇通往视觉盛宴的大门。但是在UE5的世界里,渲染技术其实还有着本地渲染和远程渲染之分,而且它们与时下大热的云渲染技术也有着千丝万缕的联系。本文主要说明UE5中的远程渲染和本地渲…

鲜为人知的 9 种人工智能工具

这套 AI 工具确实与众不同。您可能在其他地方读到过,图像生成需要大量工作。使用 AI 工具制作网站也需要大量工作。此列表涵盖了我在过去几个月发现的一些前沿项目,它们在很多方面都很有用。 如果您没有时间阅读最新的营销书籍,SoBrief 是个不…

Semantic Kernel进阶:多模型的支持

大家可能已经知道,Semantic Kernel默认主要支持两款模型:OpenAI和AzureOpenAI。对于开发者来说,这显然是不够的,尤其是当我们希望对接国内的一些强大模型,比如百度的文心一言、阿里的通义千问、搜狗的百川、智谱ChatGL…

kickstart自动安装脚本制作详解

一、kickstart自动安装脚本制作 此实验中,使用Rhel7.9,并开启图形化系统 1.设置实验环境 1.使用Rhel7.9 2.需要打开图形化系统 [rootpxe ~]# hostnamectl # 查看当前系统是否为图形化Static hostname: pxeIcon name: com…

数字赋能下的艺术蝶变:沃可趣如何重塑乐园演艺人才培训?

全球知名主题乐园在2023年共接待游客超过1300万人次。 这意味着,在童话世界里创造快乐的演职人员们,平均每天要与三、四万人见面,以精湛的演技服务好每一个人,其工作难度和强度不言而喻。 减轻员工负担,帮助员工成长…