Elasticesearch内存详解(一)——基本概念

简介: 用几篇文章简单说一下ES内存;本篇是第一章,ES的基本概念。

1. cluster 集群

多个节点组合在一起就形成了一个集群,在每个ES节点中,我们可以通过配置集群的名称来使各个节点组合在一起,成为一个集群。当某些节点的集群名称一样,ES会自动根据配置文件中的地址找到这些节点,然后就自动组成一个集群了,这一切都是ES自动来完成的,所以说ES的分布式扩展性很强,在这些节点中可以随时增加和删除节点不用费一点精力。    

image.png

2.node  节点

ES的时候是在一台服务器上安装ES,其实这就是一个节点(Node),由ES是分布式的,所以我们可以在多台服务器上安装ES,这样我们就有了多个节点。

image.png

3.index 索引、type类型、Document文档

(逻辑命名空间,它映射到一个或多个主分片,并且可以具有零个或多个副本分片)类似mysql中的数据库

type 文档的逻辑容器,类似表,在 Elasticsearch 6.0 以后,一个 Index 只能含有一个 type。在默认的情况下是 _doc。在 8.0 的版本中,type 将被彻底删除

Document 文档  就是 mysql里的一条记录,ES的最小单元。

查看索引信息:

curl -XGET http://localhost:9200/twitter/_settings?pretty

4 share 分片

share,Elasticsearch 提供了将索引划分成多份的能力,这些份就叫做分片(shard)。

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

有两种类型的分片:Primary shard 和 Replica shard

Primary shard: 每个文档都存储在一个 Primary shard。 索引文档时,它首先在Primary shard 上编制索引,然后在此分片的所有副本上(replica)编制索引。索引可以包含一个或多个主分片。

Replica shard: 每个主分片可以具有零个或多个副本。 副本是主分片的副本,有两个目的:

增加故障转移:如果主要故障,可以将副本分片提升为主分片。

提高性能:get 和 search 请求可以由主 shard

永远不会在与其主分片相同的节点上启动副本分片

默认情况下,Elasticsearch 为每个索引创建一个主分片和一个副本。

image.png

下面的图表示的是一个 index 有 5 个 shard 及 1 个 replica

分配多个分片和副本是分布式搜索功能设计的本质,提供高可用性和快速访问索引中的文档。

主副本和副本分片之间的主要区别在于,只有主分片可以接受索引请求。副本和主分片都可以提供查询请求

image.png

如果一个 index 显示的是红色,表面这个 index 至少有一个 primary shard 没有被正确分配,并且有的 shard 及其相应的 replica 已经不能正常访问。

如果是绿色,表明 index 的每一个 shard 都有备份 (replica),并且其备份也成功复制在相应的replica shard 之中。

如果其中的一个 node 坏了,相应的另外一个 node 的 replica将起作用,从而不会造成数据的丢失。

获得index健康情况

http://localhost:9200/_cat/indices/twitter

yellow 标识RS PS在同一个node中,无法高可用

http://localhost:9200/_cat/shards

image.png

相关文章
|
3月前
|
存储 安全 Java
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
28 1
|
14天前
|
监控 算法 Java
深入理解Java中的垃圾回收机制在Java编程中,垃圾回收(Garbage Collection, GC)是一个核心概念,它自动管理内存,帮助开发者避免内存泄漏和溢出问题。本文将探讨Java中的垃圾回收机制,包括其基本原理、不同类型的垃圾收集器以及如何调优垃圾回收性能。通过深入浅出的方式,让读者对Java的垃圾回收有一个全面的认识。
本文详细介绍了Java中的垃圾回收机制,从基本原理到不同类型垃圾收集器的工作原理,再到实际调优策略。通过通俗易懂的语言和条理清晰的解释,帮助读者更好地理解和应用Java的垃圾回收技术,从而编写出更高效、稳定的Java应用程序。
|
2月前
|
存储 程序员 C++
内存管理概念 (二)
内存管理概念 (二)
34 1
|
2月前
|
存储 算法 程序员
内存管理概念(一)
内存管理概念(一)
61 0
|
3月前
|
安全 Java 开发者
Java面试题:Java内存模型解析,Java内存模型的基本概念和它的重要性,Java内存模型中的“可见性”和“有序性”,以及具体实现?
Java面试题:Java内存模型解析,Java内存模型的基本概念和它的重要性,Java内存模型中的“可见性”和“有序性”,以及具体实现?
43 1
|
5月前
|
存储 缓存 Java
简单介绍一下什么是“工作内存”和“主内存”(JMM中的概念)
该文介绍了Java多线程中`volatile`关键字确保内存可见性的概念。
69 0
|
5月前
|
消息中间件 Linux
【linux进程间通信(二)】共享内存详解以及进程互斥概念
【linux进程间通信(二)】共享内存详解以及进程互斥概念
|
5月前
|
存储
【进程概念】虚拟内存与页表简述
【进程概念】虚拟内存与页表简述
|
5月前
|
消息中间件 Linux
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
112 2
|
5月前
|
存储 Java Python
Python内存管理:基本概念与技巧
Python是一种功能强大的编程语言,广泛应用于各种领域。在Python中,内存管理是一个非常重要的概念,它直接影响到程序的性能和稳定性。本文将详细介绍Python内存管理的各个方面,包括基本概念、原理、技巧和应用,以帮助读者从入门到精通Python内存管理。

热门文章

最新文章

下一篇
无影云桌面