集群 cluster

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。

一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。一个节点只能通过指定某个集群的名字,来加入这个集群。
如上图,假设有一个索引,一个索引有5个分片,一个复制,总共有10个分片,为了保证高可用,每一个分片的复制分片与复制来源不在同一个节点上

节点 node

一个节点就是集群中具体的一台服务器,作为集群的一部分,它用来存储数据,参与集群的索引个搜索。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动节点的时候赋予节点。

一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入到一个叫做“elasticsearch”的集群中,

这意味着,如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做“elasticsearch”的集群中。

在一个集群里,可以拥有任意多个节点。而且,如果当前你的网络中没有运行任何Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的集群。

分片 shards

一个节点可以存储超出单个节点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这么大的空间;或者单个节点处理搜索请求,响应太慢。
为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。

每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。


如果集群中只有一个节点,那么所有分片都会放在同一个节点上。

分片很重要,主要有两方面原因:
1)允许你分片分割/扩展你的容量
2)允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量
至于一个分片怎么分布,它的文档如何聚合回搜索请求,是完全有Elasticsearch管理的,对于作为用户的你来说,这些都是透明。

数据路由 document routing
当客户端发起创建document的时候,es需要确定这个document放在该index的哪个分片上。这个过程就叫数据路由。
路由算法: shard = hash(routing)%number_of_primary_shards

复制 replicas

在一个网络/云的环境里,失败随时都可能发生,在某个分片/节点不知怎么的就处于离线状态,或者由于任何原因消失了,

这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

复制之所以重要,有两个主要原因:

1)在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与原/主要(original/primary)分片置于同一节点上。

2)扩展你的搜索量/吞吐量,因为搜索可以在所有的复制上并行运行。

总之,每个索引可以被分成多个分片。一个索引也可以被复制0次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。

分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变复制的数量,但是你事后不能改变分片的数量。


默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个复制,这意味着,如果你的集群中至少有两个节点,

你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样的话每个索引总共就有10个分片。

通过elasticsearch-head查看:

参考原文1
参考原文2

elasticsearch中的关键词相关推荐

  1. 图解Elasticsearch中的_source、_all、store和index属性

    为什么80%的码农都做不了架构师?>>>    Elasticsearch中有几个关键属性容易混淆,很多人搞不清楚_source字段里存储的是什么?store属性的true或fals ...

  2. Elasticsearch中的倒排索引和读写操作原理解析

    目录 前言 一.倒排索引 二.Elasticsearch中的基本概念 三.写操作原理 四.读操作原理 前言 在实际的生产环境中,起初启用Elasticsearch(下称ES)是为了解决模糊查询的问题. ...

  3. ElasticSearch 中的中文分词器以及索引基本操作详解

    文章目录 1.ElasticSearch 分词器介绍 1.1 内置分词器 1.2 中文分词器 1.2.1 安装 1.2.2 测试 1.2.3 自定义扩展词库 1.2.3.1 本地自定义 1.2.3.2 ...

  4. Elasticsearch中FST与前缀搜索

    FST的基本概念 FST(Finite-State Transducer)是一种有限状态自动机,可以将一组输入符号映射为一组输出符号.FST由一组状态和一组转移组成,状态可以是起始状态.接受状态或既是 ...

  5. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如何在Elasticsearch中安装中文分词器(IK+pinyin) 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当 ...

  6. elasticsearch中best fields策略dis_max和tie_breaker详解

    参考:elasticsearch中best fields策略dis_max和tie_breaker详解 概念 常规multi-field搜索结果分析 dis_max参数设置 一.为帖子数据增加cont ...

  7. 2021年大数据ELK(五):Elasticsearch中的核心概念

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Elasticsearch中的核心概念 一.索引 index 二 ...

  8. textrank4zh是_GitHub - 997666901/TextRank4ZH: 从中文文本中自动提取关键词和摘要

    TextRank4ZH TextRank算法可以用来从文本中提取关键词和摘要(重要的句子).TextRank4ZH是针对中文文本的TextRank算法的python算法实现. 安装 方式1: $ py ...

  9. 在Elasticsearch中对 text 类型的字段进行聚合异常Fielddata is disabled,Set fielddata=true

    在Elasticsearch中对 text 类型的字段进行聚合异常Fielddata is disabled,Set fielddata=true 参考文章: (1)在Elasticsearch中对 ...

最新文章

  1. Python匿名函数:lamdba()函数
  2. openFileDialog 打开TXT记事本文件写入数据库
  3. java的编译及运行
  4. Unity Shader着色器优化
  5. 阮一峰react demo代码研究的学习笔记 - how is source code converted
  6. [jQuery] jQuery中如何将数组转化为json字符串,然后再转化回来?
  7. tornado框架hello world实践
  8. [C++] - 类的构造函数constructor
  9. HttpServletRequest对象
  10. 通过java.net.URLConnection发送HTTP请求
  11. php ddos 防御,PHP DDos的几个防御方法
  12. 递归算法经典实例python-浅谈Python 递归算法指归
  13. 开源公告|腾讯 PAG 动画组件对外开源
  14. VS Code插件安装位置
  15. uniapp路由守卫
  16. VMware虚拟机 之 VMX进程已提前退出
  17. 计算机主机机箱连接各部件,电脑的各部件组装都是用什么联接的
  18. 第一届中国数字藏品大会顺利召开
  19. 【Linux入门】— 腾讯云服务器的搭建
  20. 最没灵魂的爬虫——Selenium 游戏信息的爬取与分析

热门文章

  1. 三维激光扫描技术在文化旅游项目数字化中的应用
  2. 计算机专业用r5跟i5,r5处理器和i5差距
  3. 特别报道:机器人时代即将开启
  4. 欧拉角万向节死锁与四元数的相关资料
  5. gym102136C. Kingdom Partition /Aizu - 2786G - Share the Ruins Preservation
  6. 苹果的日子越发难过,A16处理器遭砍单,iPhone销量下滑成定局
  7. 电商研发——产品相关业务概述
  8. ntt模板+hdu6589
  9. 大数据Hadoop(三):Hadoop国内外应用
  10. [DIY原创]电子钢琴