返回顶部
首页 > 资讯 > 后端开发 > JAVA >Elasticsearch集群搭建与相关知识点整理
  • 119
分享到

Elasticsearch集群搭建与相关知识点整理

elasticsearchdocker大数据搜索引擎springcloud原力计划 2023-09-07 07:09:23 119人浏览 薄情痞子
摘要

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍elasticsearch集群的搭建,以及Elasticsearch集群相关知识点整理。 如果文章有什么需要改进

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍elasticsearch集群的搭建,以及Elasticsearch集群相关知识点整理。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

在这里插入图片描述

以下正文开始

文章目录

Elasticsearch部署集群

在这里插入图片描述
单机部署的Elasticsearch在做数据存储时会遇到存储数据上线和机器故障问题,因此对于Elasticsearch集群的部署是有必要的。搭建Elasticsearch集群,可以将创建的索引库拆分成多个分片(索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中),存储到不同的节点上,以此来解决海量数据存储问题;将分片上的数据分布在不同的节点上可以解决单点故障问题。

一个节点(node)就是一个Elasticsearch实例,一个Elasticsearch集群(cluster)由一个或多个节点组成,它们具有相同的集群名称(cluster.name),它们协同工作,分享数据和负载。
当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据(同步)。
编写内容如下的Docker-compose文件,将其上传到linux的/root目录下:

version: '2.2'services:  es01:    image: elasticsearch:7.12.1    container_name: es01    environment:      - node.name=es01      - cluster.name=es-docker-cluster # 集群名称相同      - discovery.seed_hosts=es02,es03 # 可以发现的其他节点      - cluster.initial_master_nodes=es01,es02,es03 # 可以选举为主节点      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    volumes:      - data01:/usr/share/elasticsearch/data # 数据卷    ports:      - 9200:9200 # 容器内外端口映射    networks:      - elastic  es02:    image: elasticsearch:7.12.1    container_name: es02    environment:      - node.name=es02      - cluster.name=es-docker-cluster      - discovery.seed_hosts=es01,es03      - cluster.initial_master_nodes=es01,es02,es03      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    volumes:      - data02:/usr/share/elasticsearch/data    ports:      - 9201:9200    networks:      - elastic  es03:    image: elasticsearch:7.12.1    container_name: es03    environment:      - node.name=es03      - cluster.name=es-docker-cluster      - discovery.seed_hosts=es01,es02      - cluster.initial_master_nodes=es01,es02,es03      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    volumes:      - data03:/usr/share/elasticsearch/data    networks:      - elastic    ports:      - 9202:9200volumes:  data01:    driver: local  data02:    driver: local  data03:    driver: localnetworks:  elastic:    driver: bridge

es运行需要修改一些linux系统权限,进入并修改/etc/sysctl.conf文件

vi /etc/sysctl.conf

在文件中添加下面的内容:

vm.max_map_count=262144

然后执行命令,让配置生效:

sysctl -p

通过docker-compose启动集群:

docker-compose up -d

启动完成后,使用docker查看运行的容器,可以看到已启动Elasticsearch集群:

在这里插入图片描述

Elasticsearch集群职责

在Elasticsearch集群中,不同的节点可以承担不同的职责,例如:

  1. Master节点:负责集群的管理和调度,包括分配和重新分配分片、节点的加入和退出、索引的创建和删除等。

  2. Data节点:负责存储数据和执行搜索请求,包括分片的读写、搜索请求的处理等。

  3. Ingest节点:负责对文档进行预处理,例如对文档进行解析、转换、过滤等操作。

  4. Coordinating节点:负责协调搜索请求,将请求转发给适当的Data节点进行处理,并将结果汇总返回给客户端。

在实际的生产环境中,可以根据集群的规模和负载情况来决定节点的职责划分。例如,在小型集群中,可以将所有节点都设置为Master节点和Data节点;在大型集群中,可以将一部分节点设置为Master节点,一部分节点设置为Data节点,同时还可以设置一些Coordinating节点和Ingest节点来协调搜索请求和处理文档预处理。

Elasticsearch集群健康状态

Elasticsearch集群的健康状态可以通过以下命令或api来查看:

  1. 命令行方式:

可以使用curl命令或者Httpie命令来访问Elasticsearch的API来获取集群健康状态,例如:

curl -X GET "localhost:9200/_cat/health?v"

或者

http GET localhost:9200/_cat/health?v

其中,localhost:9200是Elasticsearch的地址和端口号,_cat/health是API的路径,v表示显示详细信息。执行以上命令后,会返回如下信息:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1578318307 02:38:27  elasticsearch green           1         1      6   3    0    0        0             0                  -                100.0%

其中,status字段表示集群的健康状态,有以下几种取值:

  • green:所有主分片和副本分片都正常分配到节点上。
  • yellow:所有主分片都正常分配到节点上,但是有一些副本分片还没有分配到节点上。
  • red:有一些主分片没有分配到节点上,导致数据不可用。
  1. API方式:

可以使用Elasticsearch的API来获取集群健康状态,例如:

GET /_cluster/health

执行以上命令后,会返回如下信息:

{  "cluster_name" : "my_cluster",  "status" : "green",  "timed_out" : false,  "number_of_nodes" : 1,  "number_of_data_nodes" : 1,  "active_primary_shards" : 6,  "active_shards" : 6,  "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}

其中,status字段表示集群的健康状态,其他字段的含义和命令行方式相同。

在这里插入图片描述

Elasticsearch集群分片

Elasticsearch集群中的数据被分成多个分片(shard),每个分片是一个独立的Lucene索引。分片可以在集群中的不同节点上分布,以提高搜索和写入性能。分片有两种类型:主分片(primary shard)和副本分片(replica shard)。

主分片是每个文档的主要存储位置,每个主分片都有一个唯一的标识符,并且只能在一个节点上存在。当一个文档被索引时,它被路由到一个主分片,然后被写入该分片的Lucene索引。

副本分片是主分片的拷贝,它们可以在不同的节点上存在。副本分片的数量可以在索引创建时指定,它们可以提高搜索性能和可用性。当一个主分片不可用时,副本分片可以被用来提供搜索结果。副本分片也可以用来平衡负载,因为它们可以被用来处理读取请求。

在Elasticsearch集群中,分片的数量和副本的数量可以通过索引的设置进行配置。通常,主分片的数量应该小于或等于集群中的节点数,以确保每个节点都有主分片。副本分片的数量应该根据集群的负载和可用性需求进行配置。

当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。
在这里插入图片描述

Elasticsearch故障转移

集群的master节点会监控集群中的所有节点的状态,一旦发现有节点宕机,就会立即将宕机的节点分片的数据迁移到其他节点上,以此来保证数据安全,这个流程叫故障转移。与此同时剩余节点中会重新选举主节点,当原来的主节点恢复正常时,原来迁移到其他节点上面的分片会被迁移到恢复的节点上,但此时原来的主节点不再是主节点(哥不再是当年的哥)。

总结:
Elasticsearch故障转移的实现主要依赖于以下两个机制:

  1. 分片复制机制:Elasticsearch将索引分为多个分片,每个分片都有多个副本,分布在不同的节点上。当一个节点发生故障时,其他节点上的副本可以接管该分片的工作,保证数据的可用性。

  2. 主从复制机制:Elasticsearch集群中的每个分片都有一个主节点和多个从节点。当主节点宕机时,从节点会自动选举一个新的主节点,以继续处理该分片的请求。

在实际应用中,为了进一步提高Elasticsearch集群的可用性和稳定性,可以采用以下措施:

  1. 配置多个节点:将Elasticsearch集群部署在多个节点上,以分散风险,避免单点故障。

  2. 监控节点状态:使用监控工具对Elasticsearch节点进行实时监控,及时发现并处理故障。

  3. 自动化运维:使用自动化运维工具对Elasticsearch集群进行管理和维护,减少人为操作的错误和风险。

  4. 定期备份数据:定期备份Elasticsearch集群中的数据,以防止数据丢失和损坏,保证数据的可恢复性。

书籍推荐

工欲善其事,必先利其器。今天推荐你入手这本React技术的神级武器库:《React Cookbook中文版》 ,(O’reily的经典系列书籍)

图片

正如本书的英文原名一样,作为Cookbook(菜谱),本书将呈现React各个方面的“精美菜肴”。

具体说来,本书具有如下特点:

涉及React技术的方方面面

从目录就可以看出,本书覆盖了所有React技术使用者可能会涉及的方方面面。译者团队频频感慨,这本书真是太全了,如果能把书中内容都研究透,绝对可以成为React大拿。如果你是前端架构师,本书应该常伴你左右。

内容讲解循序渐进

相信每个爱钻研技术的开发者,看一般技术书籍的时候往往有这种感觉:内容流于泛泛,看完好像学了很多,却又很容易遗忘。而本书作为一本“菜谱”,每章的目标都是做出一道“菜肴”(即一个前端项目),每个小节又都以问题为牵引,让我们在不断跟随书中节奏解决问题的过程中,逐步对这个项目不断完善和迭代,在该章完结的时候,正好完成一个完整的可运行实例。其中要说明的是,这些问题来源于我们React技术开发者工作中真正遇到的最常见难题,因此本书又具备了另一个特点,即可以直接当成工具书,随用随查(这也是书名的本意)。

翔实的参考资料

每个小节除了“问题”和“解决方案”之外,还有“讨论”,很多时候还会给出重要资料的相关链接,便于读者进一步学习。相信每一个想在前端领域不断精进的小伙伴,在阅读的过程中,都会不断感知到自己的知识网络又拓展了。

以上只是大体介绍了本书的特色,本书还有很多亮点需要读者在阅读过程中去探索,比如在书中项目选取上的匠心独运,需要读者亲自去体会,相信你通读完全书后,也会跟我们得出同样的结论:本书是React技术的神级武器库。

读者收获

React可以帮助你便捷地创建和处理应用程序,但要掌握如何将各部分功能有机地整合在一起却并不容易。如何验证表单?如何在保持代码精简的情况下实现复杂的多步骤用户操作?如何测试代码?如何保证可维护性?如何连接后端?如何提高代码可读性?本书可以帮你快速解决这些问题。
许多书籍教你如何入门、理解框架,或者如何将组件库与React结合使用,但很少提供代码示例来帮助你解决具体的问题。本书简明易懂,包含开发人员使用React解决常见问题时的示例代码,这些解决方案按主题和问题类型分类,便于你索引和查找。

通过阅读本书,你将学会:

  • 向使用React构建的单页面应用程序引入丰富多彩的UI。
  • 创建可以离线安装和使用的渐进式WEB应用程序。
  • 与REST、GraphQL等后端服务集成。
  • 自动测试应用程序的可访问性。
  • 使用WebAuthn引入指纹验证和安全令牌,增强应用程序的安全性。
  • 处理bug,并避免常见的功能和性能问题。

在这里插入图片描述

京东购买链接:点击了解

评论区任意留言可参与活动抽奖(评论最多五条,抽取四名欧皇)

好了,本篇文章就先分享到这里了,后续会继续分享其他方面的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_53847859/article/details/130278452

--结束END--

本文标题: Elasticsearch集群搭建与相关知识点整理

本文链接: https://lsjlt.com/news/397879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Elasticsearch集群搭建与相关知识点整理
    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍Elasticsearch集群的搭建,以及Elasticsearch集群相关知识点整理。 如果文章有什么需要改进...
    99+
    2023-09-07
    elasticsearch docker 大数据 搜索引擎 springcloud 原力计划
  • C#泛型集合的相关知识点整理
    这篇文章主要讲解了“C#泛型集合的相关知识点整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#泛型集合的相关知识点整理”吧!为什么要用C#泛型集合?在C# 2.0之前,主要可以通过两种方...
    99+
    2023-06-17
  • Linux集群的相关知识点有哪些
    今天小编给大家分享一下Linux集群的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、 目前网站架构一般分...
    99+
    2023-06-26
  • mysql主从的相关知识点整理
    这篇文章主要讲解了“mysql主从的相关知识点整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql主从的相关知识点整理”吧!一、导致数据库停止的原因...
    99+
    2024-04-02
  • Mysql数学函数相关知识点整理
    本篇内容介绍了“Mysql数学函数相关知识点整理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!所有的数学函...
    99+
    2024-04-02
  • SQL注入相关知识整理
    SQL注入相关知识整理 SQL注入 什么是SQL注入  SQL注入(Sql Injection ) 是一种将SQL语句插入或添加到应用(用户)的输入参数中的攻击 这些参数传递给后台的SQL数据库服务器加以解析并执行 哪里存在SQL注入?...
    99+
    2019-01-31
    SQL注入相关知识整理 数据库入门 数据库基础教程 数据库 mysql
  • Android签名相关知识整理
      不止一次有用到Android签名相关的知识,每次都几乎从零开始在Google上搜索找,不想在继续这样了,找了个时间好好整理了一下自己用到的一些碎片知识,于是乎放到这里,...
    99+
    2022-06-06
    android签名 Android
  • python文件操作相关知识点总结整理
    本文汇总了python文件操作相关知识点。分享给大家供大家参考,具体如下: 总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件、文件夹(文件操作函数)的操作需...
    99+
    2022-06-04
    知识点 操作 文件
  • Redis集群与扩展知识点分析
    这篇文章主要讲解了“Redis集群与扩展知识点分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis集群与扩展知识点分析”吧!Redis的高可用1.为...
    99+
    2024-04-02
  • redis集群搭建_动力节点Java学院整理
    现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境曾今也遭遇到这种情况,导致redis内存不够挂掉的情况,当然这...
    99+
    2022-06-04
    节点 集群 动力
  • java异常处理相关知识点
    这篇文章将为大家详细讲解有关java异常处理相关知识点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常概述在Java中,这种在程序运行时可能出现的一些错误称为异常。异常是一个在程序执行期间发生的事件,它...
    99+
    2023-06-29
  • AMM与ASMM相关知识点有哪些
    这篇文章主要讲解了“AMM与ASMM相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“AMM与ASMM相关知识点有哪些”吧!一、AMM相关知识:...
    99+
    2024-04-02
  • Hooks与vue的相关知识点有哪些
    这篇文章将为大家详细讲解有关Hooks与vue的相关知识点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Hooks是React在V16.7.0-alpha版本中引入...
    99+
    2024-04-02
  • mysql相关知识整理(参考《高性能MySQL》)
    2.事务的隔离级别 未提交读:事务的修改,即使没有提交,对其他事务也都是可见的。(有脏读可能性) 2.已提交读:一个事务从开始直到提交之前,所作的任何修改对其他事务都是不可见。(有不可重复读可能性) 3.可重复读:同一个事务多次读取同样的记...
    99+
    2014-11-12
    mysql相关知识整理(参考《高性能MySQL》)
  • Java并发编程之死锁相关知识整理
    目录一、什么是死锁二、死锁产生的条件三、死锁产生的演示四、死锁的预防五、死锁的避免一、什么是死锁 所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都...
    99+
    2024-04-02
  • Java注释、关键字和标识符知识点整理
    本篇内容介绍了“Java注释、关键字和标识符知识点整理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、注释1.Java注释有3...
    99+
    2023-06-16
  • Java中类与对象的相关知识点总结
    目录一、面向过程与面向对象的理解二、类与对象的理解与认识三、类的成员1.字段/属性/成员变量2.对null的基本认识3.方法 (method)4.static 关键字四、封装1. p...
    99+
    2024-04-02
  • c++动态内存管理与智能指针的相关知识点
    目录引言一、介绍二、shared_ptr类make_shared函数shared_ptr的拷贝和引用shared_ptr自动销毁所管理的对象…使用动态生存期的资源的类应...
    99+
    2024-04-02
  • web创建型模式的相关知识点有哪些
    这篇文章主要讲解了“web创建型模式的相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web创建型模式的相关知识点有哪些”吧!创建型模式的讨论考虑在Prototype模式中描述...
    99+
    2023-06-19
  • Java中类与对象的相关知识点有哪些
    这篇文章给大家介绍Java中类与对象的相关知识点有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、面向过程与面向对象的理解C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。JAVA...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作