基本概念
集群(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 会自动对搜索请求进行负载均衡。
-