初识 ElasticSearch
使用场景
- 搜索引擎:生产环境中使用最多,例如京东、淘宝、美团等使用 ES 实现高性能商品搜索,支持多条件筛选、排序和相关性排名等。
- 日志分析与监控:ELK 作为日志分析的行业标准,是 ES 经典的使用场景。
- 数据分析:大数据分析,通过 DSL 快速得到结果。
与类似组件对比
对比维度 | Elasticsearch | 竞品 | 优劣总结 |
---|---|---|---|
RDBMS | 1、高性能组合查询 2、适合半结构化数据 | 1、完善的事务支持 2、强一致性 | 选 ES:复杂查询/分析场景 选 RDBMS:强事务需求 |
Solr | 1、更成熟的分布式架构 2、近实时能力更强 | ES 是 Solr 是上位替代 | 新项目优先选择 ES,Solr 被淘汰。 |
ClickHouse | 1、全文检索优势 2、近实时响应 | 1、超大规模聚合更快 2、支持二次聚合 | ES处理搜索/日志 ClickHouse处理深度分析 |
存储场景决策树
快速开始
仓库地址:L2ncE/es101
克隆仓库后进入到 docker-compose 文件 目录运行 docker-compose up
。
⚠️ 注意:自行下载 Docker 以及 docker-compose 工具
Kibana 快速开始
通过 localhost:5601
进入:
使用 Dev Tools:
Logstash 快速开始
运行 docker-compose up
命令后可以到日志中查看是否导入数据成功。
Cerebro 快速开始
通过 localhost:9000
进入:
可以看到刚导入的 movies 数据。
基本概念
概念名称 | 描述 | 关键点 / 特点 |
---|---|---|
文档 | Elasticsearch 中的最小数据单元,以 JSON 格式存储数据。 | 1、类比于关系型数据库中的一行数据。 2、包含实际数据字段(如 title , content 等)。 |
文档元数据 | 描述文档自身属性的系统字段,用于唯一标识和管理文档。 | 包含以下核心元数据: - _id :文档唯一标识符(可自定义或自动生成)。 - _index :文档所属的索引。 - _version :文档版本号(支持乐观锁)。 |
索引 | 一类结构相似文档的集合,类似于关系型数据库中的「表」。 | 通过 Mapping 定义字段类型和属性(如文本、数值、日期等)。支持倒排索引,优化全文搜索性能。 |
节点 | Elasticsearch 集群中的一个运行实例,本质是一个 Java 进程。 | 节点类型包括: - 主节点:管理集群状态。 - 数据节点:存储数据。 - 协调节点:处理请求路由。 |
分片 | 索引的物理子集,用于分布式存储和计算。分片分为主分片(Primary Shard)和副本分片(Replica Shard)。 | 主分片:数据存储和写入的基本单元,数量在索引创建时固定。 副本分片:主分片的冗余拷贝,提供高可用和查询负载均衡。 |
与关系型数据库类比
RDBMS | ElasticSearch |
---|---|
Table | Index |
Row | Document |
Column | Field |
Schema | Mapping |
SQL | DSL |
健康状况
1、在 Kibana 中查询,使用命令 GET _cluster/health
2、在 Cerebro 中查询
测试节点下线
此时状态为 Yellow。
写在最后
这是该系列的第一篇,参考了一鸣的课程并进行修改优化,未来会持续更新该系列,欢迎关注👏🏻
同时欢迎关注公众号:LanTech指南。不定时分享职场思考、独立开发日志、大厂方法论和后端经验❤️