Elasticsearch 的核心概念

Cluster

Elasticsearch 集群是由相同 cluster.name (默认值为 elasticsearch)的一个或多个 Elasticsearch 节点组成的。同一个集群内节点名字不能重复,但是集群名称一定要相同。集群中可以仅有一个节点

确保不要在不同的环境中重用相同的集群名称,否则可能会导致节点加入错误的集群。

Node

集群中的每个运行中的 Elasticsearch 服务器都可称之为节点节点由一个名称标识,该名称在默认情况下是在启动时分配给节点的随机全局惟一标识符(UUID)

可以将节点配置为按集群名称连接特定的集群。默认情况下,每个节点都被设置为加入一个名为 elasticsearch 的集群,这意味着如果在网络上启动多个节点并假设它们可以发现彼此,它们将自动形成并加入一个名为 elasticsearch 的集群。
在单个集群中,可以有任意多的节点。此外,如果网络上当前没有其他 Elasticsearch 节点,启动单个节点将默认形成一个名为 elasticsearch 的新单节点集群。

Shards

索引可能存储大量数据,这些数据可能超过单个节点的硬件限制。例如,包含10亿个文档、占用1TB磁盘空间的单个索引可能不适用于单个节点的磁盘,或者速度太慢,无法单独处理来自单个节点的搜索请求。
为了解决这个问题,
Elasticsearch 需要将一个索引上的数据进行水平拆分,拆分出来的每个数据部分称之为一个分片。一般来说,每个分片都会放到不同的服务器上。每个分片是一个功能完整且独立的“索引”。

Elasticsearch 依赖 Lucene,Elasticsearch 中的每个分片其实都是 Lucene 中的一个索引文件,因此每个分片必须有一个主分片和零到多个副本。
在 Elasticsearch 中,默认为一个索引创建5个主分片,并分别为每个主分片创建1个副本。

当在一个设置有多分片的索引中写入数据时,是通过路由来确定具体写入哪个分片中的。因此在创建索引时需要指定分片的数量,并且分片的数量一旦确定就不能更改。
查询索引时,需要在索引对应的多个分片上进行查询。Elasticsearch 会把查询发送给每个相关的分片,并汇总各个分片的查询结果。对于上层应用程序来说,分片是透明的,即应用上层程序并不知道分片的存在。

Replicas

副本指的是对主分片的备份,这种备份是精确复制模式。每个主分片可以有零到多个副本,主分片和备份分片都可以对外提供数据查询服务

当创建索引进行写入操作时,首先在主分片上完成数据的索引,然后数据会从主分片分发到备份分片上进行索引。当主分片不可用时,Elasticsearch 会在备份分片中选举出一个分片作为主分片,从而避免数据丢失。

一方面,备份分片既可以提升 Elasticsearch 系统的高可用性,又可以提升搜索时的并发性能;另一方面,如果备份分片设置太多,在写入操作时会增加数据的同步负担。

Index

索引是具有类似特征文档的集合(相当于 MySQL 中的数据库的概念)。索引由一个名称(必须全部为小写)唯一标识,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引。

在单个集群中,可以定义任意数量的索引。

Type(Deprecated in 6.0.0)

注意:在 Elasticsearch 6.0.0 或更高版本中创建的索引可能只包含一个映射类型。Elasticsearch 5.x 中创建的具有多种映射类型的索引,在 Elasticsearch 6.x 中将继续像以前一样发挥作用。映射类型将在 Elasticsearch 7.0.0 中完全删除。

类别指的是索引内部的逻辑分区(相当于数据库中的表),通过 type 的名字在索引内进行唯一标识。在查询时如果没有该值,则表示需要在整个索引中查询

6.x 版本之后已经不可能在索引中创建多个类型,整个类型的概念将在以后的版本中删除。

Document

索引中的每一条数据称作一个文档,文档是可以建立索引的基本信息单元(相当于数据表中的一行数据)。通过 _id 在 Type 内进行唯一标识。文档使用JSON表示。

在索引中,可以存储任意数量的文档(也就是说数据库中可以存放任意类型的行)。
注意,尽管文档物理上驻留在索引中,但文档实际上必须被分配给索引中的类型。

Settings

Settings 是集群中索引的定义信息,比如一个索引默认的分片数、副本数等。

Mapping

Mapping 中保存了定义索引中字段的存储类型、分词方式、是否被存储等信息,有点类似于关系型数据中的表结构信息。

在 Elasticsearch 中,Mapping 是可以动态识别的。Elasticsearch 会根据数据格式自动识别它的类型,如果没有特殊需求,则不需要手动创建 Mapping,当需要对某些字段添加特殊属性时,就需要手动设置 Mapping。

一个索引的 Mapping 一旦创建,若已经存储了数据,就不可以修改了

Analyzer

Analyzer 是字段分词方式的定义。一个 Analyzer 通常由一个 Tokenizer 和零到多个 Filter 组成。默认的标准 Analyzer 包含一个标准的 Tokenizer 和三个 Filter,即Standard Token Filter、Lower Case Filter 和 Stop Token Filter。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值