ElasticSearch 的基本概念

概念
Elasticsearch 有几个核心概念,先理解这些概念将有助于掌握 Elasticsearch。近实时(Near Realtime / NRT)Elasticsearch 是一个近实时的搜索平台,从生成文档索引到文档成为可搜索,有一个轻微的延迟(通常是一秒钟)。

集群(Cluster)
ES 默认就是集群状态,整个集群是一份完整、互备的数据。集群是一个或多个节点(服务器)的集合。集群中的节点一起存储数据,对外提供搜索功能。集群由一个唯一的名称标识,该名称默认是“elasticsearch”。集群名称很重要,节点都是通过集群名称加入集群。集群不要重名,取名一般要有明确意义,否则会引起混乱。例如,开发、测试和生产集群的名称可以使用logging-dev、logging-test和logging-prod。集群节点数不受限制,可以只有一个节点。

节点(Node)
节点是一个服务器,属于某个集群。节点存储数据,参与集群的索引和搜索功能。与集群一样,节点也是通过名称来标识的。默认情况下,启动时会分配给节点一个UUID(全局惟一标识符)作为名称。如有需要,可以给节点取名,通常取名时应考虑能方便识别和管理。默认情况下,节点加入名为 elasticsearch 的集群,通过设置节点的集群名,可加入指定集群。

索引(Index)
索引是具有某种特征的文档集合,相当于一本书的目录。例如,可以为客户数据建立索引,为订单数据建立另一个索引。索引由名称标识(必须全部为小写,可以使用该名称,对索引中的文档进行建立索引、搜索、更新和删除等操作。一个集群中,索引数量不受限制。类似于 rdbms的database(5.x),对于用户来说是一个逻辑数据库,虽然物理上会被分多个shard 存放,也可能存放在多个 node 中。 6.x 7.x index 相当于 table

类型(Type)
类似于 rdbms 的 table,但是与其说像 table,其实更像面向对象中的 class , 同一 Json的格式的数据集合。(6.x 只允许建一个,7.0 被废弃,造成 index 实际相当于 table级)

文档(Document)
文档是可以建立索引的基本信息单元,相当于书的具体章节。例如,可以为单个客户创建一个文档,为单个订单创建另一个文档。文档用 JSON
(JavaScript 对象表示法)表示。在索引中,理论上可以存储任意数量的文档。类似于 rdbms 的 row、面向对象里的 object

字段|属性(Field)
相当于字段、属性

分片与副本(Shards & Replicas)
索引可能存储大量数据,数据量可能超过单个节点的硬件限制。例如,一个索引包含 10 亿个文档,将占用 1TB 的磁盘空间,单个节点的磁盘放不下。Elasticsearch 提供了索引分片功能,创建索引时,可以定义所需的分片数量。每个分片本身都是一个功能齐全,独立的“索引”,可以托管在集群中的任何节点上。分片之所以重要,

主要有 2 个原因: 
◼ 允许水平切分内容,以便内容可以存储到普通的服务器中
◼ 允许跨分片操作(如查询时,查询多个分片),提高性能/吞吐量
分片如何部署、如何跨片搜索完全由 Elasticsearch 管理,对外是透明的。网络环境随时可能出现故障,如果某个分片/节点由于某种原因离线或消失,那么使用故障转移机制是非常有用的,强烈建议使用这种机制。为此,Elasticsearch 允许为分片创建副本。

副本之所以重要,主要有 2 个原因:
◼ 在分片/节点失败时提供高可用性。因此,原分片与副本不应放在同一个节点上。
◼ 扩展吞吐量,因为可以在所有副本上并行执行搜索。
总而言之,索引可以分片,索引分片可以创建副本。复制后,每个索引将具有主分片与副本分片。创建索引时,可以为每个索引定义分片和副本的数量。之后,还可以随时动态更改副本
数量。您可以使用_shrink 和_split api 更改现有索引的分片数量,但动态修改副本数量相当麻烦,最好还是预先计划好分片数量。默认情况下,Elasticsearch 中的每个索引分配一个主分片和一个副本(7.X 之前,默认是 5 片,副本是 0。7.X 默认改为 1 片,副本为 1)。如果集群中有两个节点,就可以将索引主分片部署在一个节点,副本分片放在另一个节点,提高可用性。

概念之间关系图

 这张图可以展示出 ES 各组件之间的关系,整张表是一个 Cluster,横行是 Nodes,竖列是 Indices,深绿色方块是 Primary Shards,浅绿色方块是 Replica Shards。至于单个 Host 上的 Node 数目问题,在硬件资源有限的情况下,一般的做法是一个 Host只运行一个 ES 进程,也就是一个 Node。例外情况是,由于 ES 内存配置上的特殊要求(JVM Heap 不能超过 32G),如果你的 Host 特别 NB(16 Core CPU + 128G RAM + SSD 这种),完全可以在单个 Host 上运行多个 ES 进程以避免硬件资源的浪费。

本系列所有资源均来自于尚硅谷,仅供个人学习整理!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
头哥(Hutool)是一个Java工具包,它包含了一系列方便开发者使用的工具类,但"头哥第1关:Elasticsearch基本概念"这个表述可能并不准确。Elasticsearch是一个开源的分布式搜索引擎,它主要用于全文搜索和分析。如果你是指Hutool教程或某个特定的入门任务中关于Elasticsearch的内容,我可以为你概述几个基本概念: 1. **文档**(Document): 在Elasticsearch中,数据的基本单元是文档,它类似于关系数据库中的行。每个文档都有一个唯一的ID,并存储在一个索引(Index)里。 2. **索引**(Index): 是Elasticsearch中用于存储文档的容器,类似数据库表。你可以根据需要创建多个索引,每个索引可以包含相关的文档。 3. **字段**(Field): 文档中的每个属性都是一个字段,可以设置为各种数据类型,如字符串、数字、日期等。字段还可以进行分析处理,以便于搜索。 4. **查询**(Query): 用户通过查询来检索数据,Elasticsearch支持多种查询类型,如简单匹配、复杂查询(如布尔查询、范围查询)和聚合查询。 5. **索引操作**:常见的操作包括创建索引、添加文档(index)、更新文档(update)和删除文档(delete)。 6. **分片和复制**(Sharding and Replication): Elasticsearch将索引分成多个小的、独立的部分(分片),并可以在多个节点上复制这些分片,以提高数据的可用性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值