美文网首页Elasticsearch 入门教程程序员
Elasticsearch(二)核心概念

Elasticsearch(二)核心概念

作者: 与蟒唯舞 | 来源:发表于2017-08-25 00:46 被阅读135次
Cluster 与 Node

Elasticsearch 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elasticsearch 实例。

单个 Elasticsearch 实例称为一个节点(node)。一组节点构成一个集群(cluster)。

节点(node)有一个节点名称(默认随机分配),每个节点属于哪个集群是通过一个配置(集群名称,默认是 elasticsearch)来决定的,所以启动节点节点会默认去加入一个名称为 “elasticsearch” 的集群。当然,一个节点也可以组成一个 elasticsearch 集群。

Index

Elasticsearch 会索引所有字段,经过处理后生成一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

所以,Elasticsearch 数据管理的顶层单位就叫做 Index(索引)。每个 Index 的名字必须是小写。

查看当前节点的所有 Index:

curl -X GET http://localhost:9200/_cat/indices?v
Document

Document(文档)是 Elasticsearch 中最小的数据单元,一个 Document 可以是一条商品数据,一条订单数据等,通常用 JSON 表示:
商品 Document

{
  "product_id": "1",
  "product_name": "高露洁牙膏",
  "product_desc": "高效美白",
  "category_id": "2",
  "category_name": "日化用品"
}
Type

Document 可以分组,比如 weather 这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

不同的 Type 应该有相似的结构(schema),举例来说,id 字段不能在这个组是字符串,在另一个组是数字。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如 productslogs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

列出每个 Index 所包含的 Type:

curl -X GET http://localhost:9200/_mapping?pretty=true

根据规划,Elasticsearch 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

Elasticsearch 核心概念 vs 数据库核心概念
Elasticsearch   数据库

Index            库
Type             表
Document         行
primary shard 主分片

单台机器无法存储大量数据,Elasticsearch 可以将一个索引中的数据切分为多个主分片,分布在多台服务器上存储。有了主分片就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。

replica shard 复制分片

任何一个服务器随时可能故障或宕机,此时主分片可能就会丢失,因此可以为每个主分片创建多个复制分片副本,复制分片可以在主分片故障时提供备用服务,保证数据不丢失(如果主分片不可用,复制分片提升为主分片)。多个复制分片还可以提升搜索操作的吞吐量和性能(get 和 search 请求可以被主分片或者复制分片处理)。

主分片(建立索引时一次设置,不能修改,默认 5 个),默认每个主分片都有一个复制分片,可以动态修改复制分片的数量。

默认每个索引有 10 个分片(5 个主分片,5 个复制分片),永远不要在相同的节点同时存放主分片和复制分片。最小的高可用配置是 2 台服务器。

相关文章

网友评论

    本文标题:Elasticsearch(二)核心概念

    本文链接:https://www.haomeiwen.com/subject/kzuydxtx.html