集群(Cluster)

一个 OpenSearch 集群由一个或多个节点组成,并提供集群内所有节点资源的联合管理索能力。

创建集群时系统随机分配通用唯一标识符(UUID)全局唯一,不可修改。同时一个集群的调用,由 ID 标识。您可以自定义一个集群的名称,以及为集群绑定标签,方便集群分组管理。

节点(Node)

一个节点是集群中的一个服务器,用来存储数据并参与集群的索引和搜索。节点的调用,由一个 ID 标识。您也可以自定义任意节点的名称,节点名称对于管理工作很重要。

一个集群可以创建多个节点。

索引(index)

索引是一个拥有相似特征的文档的集合,相当于关系型数据库中的一个数据库。例如,您可以拥有一个客户数据的索引,一个商品目录的索引,以及一个订单数据的索引。

一个索引通常使用一个名称(所有字母必须小写)来标识,当针对这个索引的文档执行索引、搜索、更新和删除操作的时候,这个名称被用来指向索引。

OpenSearch 关系型数据库

索引(index)

数据库(database)

文档类型(type)

表(table)

文档(document)

一行数据(row)

字段(field)

一列数据(column)

映射(mapping)

数据库的组织和结构(schema)

类型(type)

类型通常是一个索引的一个逻辑分类或分区,允许在一个索引下存储不同类型的文档,相当于关系型数据库中的一张表。例如用户类型、博客类型等。

文档(document)

文档是可以被索引的基本信息单元,相当于关系型数据库中的一行数据。例如,您可以为一个客户创建一个文档。

文档可以用 JSON 格式来表示。在一个索引中,您可以存储任意多的文档,且文档必须被索引。

字段(field)

字段是组成文档的最小单位,相当于关系型数据库中的一列数据。

映射(mapping)

映射是用来定义一个文档以及其所包含的字段如何被存储和索引,相当于关系型数据库中的Schema。例如在 mapping 中定义字段的名称和类型,以及所使用的分词器。

分片(shards)

OpenSearch 把一个完整的索引分成多个分片,可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

一个分片可以是主分片或副本分片。

  • 主分片

    支持处理查询和索引请求。在创建索引时设定,设定后不可更改。索引内任意一个文档都存储在一个主分片中,所以主分片的数量和大小决定着索引能够保存的最大数据量。

    注意

    主分片不是越多越好。因为主分片越多,OpenSearch 性能开销也会越大。

  • 副本分片

    支持处理查询请求,不支持处理索引请求。可在任何时候添加或删除副本分片。

    副本分片对搜索性能非常重要,主要体现在以下两个方面:

    • 提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。

    • 提高 OpenSearch 的查询效率,OpenSearch 会自动对搜索请求进行负载均衡。