当前位置: 首页 > news >正文

ES-5-进阶

单机 & 集群
    单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器
性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中
    配置服务器集群时,集群中节点数量没有限制,大于等于 2 个节点就可以看做是集群了。一
般出于高性能及高可用方面来考虑集群中节点数量都是 3 个以上。
集群 Cluster
    一个集群就是由一个或多个服务器节点组织在一起,共同持有整个的数据,并一起提供
索引和搜索功能。一个 Elasticsearch 集群有一个唯一的名字标识,这个名字默认就
”elasticsearch” 。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入
这个集群。
节点 Node
    集群中包含很多服务器,一个节点就是其中的一个服务器。作为集群的一部分,它存储
数据,参与集群的索引和搜索功能。
    一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点
都会被安排加入到一个叫做 “elasticsearch” 的集群中,这意味着,如果你在你的网络中启动了
若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做
“elasticsearch” 的集群中。
核心概念
索引( Index
一个索引就是一个拥有几分相似特征的文档的集合。在一个集群中,可以定义任意多的索引。
    能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录
就是索引的意思,目录可以提高查询速度。
    Elasticsearch 索引的精髓:一切设计都是为了提高搜索的性能。
类型( Type
    7.x    默认不再支持自定义索引类型(默认类型为:_doc)
文档( Document
一个文档是一个可被索引的基础信息单元,也就是一条数据
在一个 index/type 里面,你可以存储任意多的文档。
字段( Field
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。
映射( Mapping
    mapping 是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、
分析器、是否被索引等等。这些都是映射里面可以设置的,其它就是处理 ES 里面数据的一
些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,
并且需要思考如何建立映射才能对性能更好。
分片 Shards
    一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有 10 亿文档数据
的索引占据 1TB 的磁盘空间,而任一节点都可能没有这样大的磁盘空间。或者单个节点处
理搜索请求,响应太慢。为了解决这个问题, Elasticsearch 提供了将索引划分成多份的能力,
每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分
片本身也是一个功能完善并且独立的 索引 ,这个 索引 可以被放置到集群中的任何节点
分片很重要,主要有两方面的原因:
1 )允许你水平分割 / 扩展你的内容容量。
2 )允许你在分片之上进行分布式的、并行的操作,进而提高性能 / 吞吐量。
被混淆的概念是,一个 Lucene 索引 我们在 Elasticsearch 称作 分片 。 一个
Elasticsearch 索引 是分片的集合。 当 Elasticsearch 在索引中搜索的时候, 他发送查询
到每一个属于索引的分片 (Lucene 索引 ) ,然后合并每个分片的结果到一个全局的结果集。
副本( Replicas
在一个网络 / 云的环境里,失败随时都可能发生,在某个分片 / 节点不知怎么的就处于
离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是
强烈推荐的。为此目的, Elasticsearch 允许你创建分片的一份或多份拷贝,这些拷贝叫做复
制分片 ( 副本 )
复制分片之所以重要,有两个主要原因:
     在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与
/ 主要( original/primary )分片置于同一节点上是非常重要的。
    扩展你的搜索量 / 吞吐量,因为搜索可以在所有的副本上并行运行。
总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(意思是没有复制)
或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主
分片的拷贝)之别。分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可
以在任何时候动态地改变复制的数量,但是你事后不能改变分片的数量。默认情况下,
Elasticsearch 中的每个索引被分片 1 个主分片和 1 个复制,这意味着,如果你的集群中至少
有两个节点,你的索引将会有 1 个主分片和另外 1 个复制分片( 1 个完全拷贝),这样的话
每个索引总共就有 2 个分片,我们需要根据索引需要确定分片个数。
分配( Allocation
    将分片分配给某个节点的过程,包括分配主分片或者副本。如果是副本,还包含从主分
片复制数据的过程。这个过程是由 master 节点完成的。
系统架构
    一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同cluster.name 配置的节点组成,
    它们共同承担数据和负载的压力。当有节点加入集群中或者 从集群中移除节点时,集群将会重新平均分布所有的数据。
当一个节点被选举成为主节点时, 它将负责管理集群范围内的所有变更,例如增加、
删除索引,或者增加、删除节点等。 而主节点并不需要涉及到文档级别的变更和搜索等操
作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。 任何节
点都可以成为主节点。我们的示例集群就只有一个节点,所以它同时也成为了主节点。
    作为用户,我们可以将请求发送到集群中的任何节点 ,包括主节点。 每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。

    一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者 从集群中移除节点时,集群将会重新平均分布所有的数据。
     作为用户,我们可以将请求发送到集群中的任何节点 ,包括主节点。 每个节点都知道 任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论 我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将 最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。
分布式集群
1)单节点集群
http://www.lryc.cn/news/103387.html

相关文章:

  • Java面试准备篇:全面了解面试流程与常见问题
  • Go语言进阶语法八万字详解,通俗易懂
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)
  • Kotlin Multiplatform 使用 CocoaPods 创建多平台分发库
  • 前端食堂技术周刊第 92 期:VueConf 2023、TypeChat、向量数据库、Nuxt 服务器组件指南
  • 用C语言构建一个手写数字识别神经网络
  • vue关闭ESlint
  • 测试开发人员如何进行局部探索性测试?一张图告诉你
  • CentOS 8 上安装 Nginx
  • 【c语言进阶】字符函数和字符串函数知识总结
  • DB2实现正则表达式
  • CASS数据带属性转GIS的shp数据教程
  • Jenkins配置自动化构建的几个问题
  • ubuntu 命令调节显示器亮度
  • 打卡力扣题目七
  • 【EI/SCOPUS会议征稿】第三届检测技术与自动化工程国际学术会议 (TTAE 2023)
  • 时序预测 | Python实现NARX-DNN空气质量预测
  • 华为数字化转型之道-读书笔记1
  • 环形链表 II(JS)
  • 【字节三面】41. 缺失的第一个正数
  • Linux echo命令与反引号、重定向符号以及管道符
  • HTML基础知识点总结
  • VS附加到进程调试
  • 基于深度学习的高精度狗狗检测识别系统(PyTorch+Pyside6+YOLOv5模型)
  • 从互联网到云时代,Apache RocketMQ 是如何演进的?
  • XML (可扩展标记语言)
  • socket()、bind()、listen()、htons()
  • 提升开发效率,Lombok的链式编程和构建模式
  • DuDuTalk:AI语音工牌如何帮助教培公司高效管理课程顾问团队
  • C语言——静态库和动态库的创建和使用