Elasticsearch 简介:分布式搜索引擎的核心架构与概念
Elasticsearch(简称 ES)是基于 Lucene 的分布式开源搜索引擎,它封装了 Lucene 的复杂性,通过简单的 RESTful API 提供高效的全文检索、分析和存储能力。广泛应用于日志分析、电商搜索、实时监控等场景。本文将详细解析其核心概念、架构设计及数据模型。
核心概念解析
文档(Document)
- 定义:ES 中最小的数据单元,类似关系型数据库中的 “一行记录”,以 JSON 格式存储。
- 特点:
- 每个文档有唯一 ID(可自动生成或手动指定)。
- 文档字段支持多种类型(文本、数字、日期、数组等),且会被索引以支持检索。
- 示例:一篇博客文章的文档可能包含
title(标题)、content(内容)、publish_time(发布时间)等字段。
类型(Type)
- 历史角色:早期设计中,类型用于对索引内的文档进行逻辑分类(类似关系型数据库的 “表”)。
- 现状:
- ES 6.x 中限制每个索引只能有 1 个类型。
- ES 7.x 及以上彻底移除类型,仅保留默认类型
_doc。
- 移除原因:
- 不同类型的文档在物理存储上并未分离(同属一个 Lucene 索引),可能导致字段冲突(如同一字段在不同类型中类型不同)。
- 与 Lucene 模型冲突:Lucene 索引本质是 “文档集合”,类型的划分增加了复杂度,不符合分布式存储逻辑。