
本文共 1862 字,大约阅读时间需要 6 分钟。
环境
当前使用的虚拟机环境为 CentOS 7,操作系统为 Windows 7,Elasticsearch 版本为 5.4.3,Kibana 版本为 5.4.3。
基本概念
Elasticsearch 是一个分布式的、基于倒排索引的全文检索引擎。理解其核心概念对于学习和应用非常重要。以下是几个关键概念的解释:
近实时(NRT)
Elasticsearch 采用近实时搜索模型。从索引文档(创建文档)到能够被搜索索引,通常会有大约 1 秒的延迟。这一特性使得 Elasticsearch 在处理大量实时数据时表现出色。
集群
集群是 Elasticsearch 中的核心概念。它由一组节点(服务器)组成,这些节点共同存储数据并提供联合索引和搜索功能。每个集群都有一个唯一的名称,默认为 "elasticsearch"。集群名称在不同环境中应保持唯一,以避免节点错误地加入其他集群。例如,可以在开发、预发布和生产环境中分别使用不同的集群名称,如 "logging-dev"、"logging-stage" 和 "logging-prod"。
需要注意的是,Elasticsearch 只支持单节点集群。此外,可以存在多个独立的集群,每个集群都有自己的名称。
节点
节点是集群中的单个服务器,它负责存储数据并参与索引和搜索操作。每个节点都有一个唯一的标识符,默认为一个随机生成的 UUID。如果不需要使用默认标识符,可以自定义节点名称。节点名称对于管理和监控集群至关重要。
在一个集群中,默认情况下所有节点都会自动加入名为 "elasticsearch" 的集群。如果网络中存在多个节点,它们将自动形成一个单一集群。如果只启动一个节点,则会创建一个名为 "elasticsearch" 的单节点集群。
索引(Index)
索引是 Elasticsearch 中存储文档的基本单位。它类似于关系型数据库中的数据库,用于存储和管理特定类型的文档。索引通过名称唯一标识,支持的操作包括索引、搜索和删除文档。
在一个集群中,可以定义多个索引,每个索引代表不同的数据类型或分区。例如,可以创建一个名为 "customers" 的索引专门存储客户数据,另一个名为 "products" 的索引存储产品信息。
类型(Type)
索引中可以定义多个类型(type),每个类型代表逻辑上的分区或类别。类型的定义完全依赖于实际应用场景。例如,在一个博客平台中,可以将用户数据、博客内容和评论分别定义为三个不同的类型。类型类似于关系型数据库中的表,用于组织和管理文档的结构。
文档(Document)
文档是 Elasticsearch 中存储的基本单元,它可以是一个 JSON 格式的对象。例如,一个用户文档可能包含用户的姓名、邮箱和注册时间。文档需要被索引并分配到特定的类型中,才能在 Elasticsearch 中被有效管理和检索。
分片 & 副本
Elasticsearch 可以将一个索引拆分为多个分片(shards),以支持大规模数据存储和高性能搜索。每个分片都相当于一个独立的 Lucene 索引,存储在集群中的任意节点上。分片的主要作用是水平扩展和提高吞吐量。
为了确保高可用性,Elasticsearch 支持分片的副本(replicas)。主分片负责存储原始数据,副本分片则提供数据的镜像。当主分片出现故障时,副本可以在短时间内承担数据服务。默认情况下,每个索引有 5 个主分片和 1 个副本分片(相当于一个完整副本)。这意味着集群中至少需要 2 个节点来支持 5 个主分片和 5 个副本分片(总共 10 个分片)。
需要注意的是,副本分片永远不会与主分片存放在同一节点上,这确保了高可用性和数据冗余。副本分片还可以提高搜索性能,因为搜索请求可以在所有副本中并行执行。
索引 与 索引 与 索引
Elasticsearch 中的 "索引" 是一个多义词,以下是其不同含义的总结:
名词 —— —— —— | 描述 |
---|---|
索引(index) | 索引类似于传统关系数据库中的数据库,用于存储特定类型的文档。 |
索引(verb) | 将文档存储到索引中,使其可被检索。 |
倒排索引 | Elasticsearch 使用倒排索引技术来快速定位文档。 |
默认情况下,Elasticsearch 会为每个字段创建倒排索引,这使得字段可以被搜索。用户可以选择不为特定字段创建倒排索引,但这样的字段将无法被搜索到。
参考地址:[Elasticsearch 官方文档](#)
发表评论
最新留言
关于作者
