ES101系列01 | 初识ElasticSearch并通过Docker配置环境

92 阅读3分钟

初识 ElasticSearch

使用场景

  1. 搜索引擎:生产环境中使用最多,例如京东、淘宝、美团等使用 ES 实现高性能商品搜索,支持多条件筛选、排序和相关性排名等。
  2. 日志分析与监控:ELK 作为日志分析的行业标准,是 ES 经典的使用场景。
  3. 数据分析:大数据分析,通过 DSL 快速得到结果。

与类似组件对比

对比维度Elasticsearch竞品优劣总结
RDBMS1、高性能组合查询
2、适合半结构化数据
1、完善的事务支持
2、强一致性
选 ES:复杂查询/分析场景
选 RDBMS:强事务需求
Solr1、更成熟的分布式架构
2、近实时能力更强
ES 是 Solr 是上位替代新项目优先选择 ES,Solr 被淘汰。
ClickHouse1、全文检索优势
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、包含实际数据字段(如 titlecontent 等)。
文档元数据描述文档自身属性的系统字段,用于唯一标识和管理文档。包含以下核心元数据:
_id:文档唯一标识符(可自定义或自动生成)。
_index:文档所属的索引。
_version:文档版本号(支持乐观锁)。
索引一类结构相似文档的集合,类似于关系型数据库中的「表」。通过 Mapping 定义字段类型和属性(如文本、数值、日期等)。支持倒排索引,优化全文搜索性能。
节点Elasticsearch 集群中的一个运行实例,本质是一个 Java 进程。节点类型包括:
主节点:管理集群状态。
数据节点:存储数据。
协调节点:处理请求路由。
分片索引的物理子集,用于分布式存储和计算。分片分为主分片(Primary Shard)和副本分片(Replica Shard)。主分片:数据存储和写入的基本单元,数量在索引创建时固定。
副本分片:主分片的冗余拷贝,提供高可用和查询负载均衡。

与关系型数据库类比

RDBMSElasticSearch
TableIndex
RowDocument
ColumnField
SchemaMapping
SQLDSL

健康状况

1、在 Kibana 中查询,使用命令 GET _cluster/health

2、在 Cerebro 中查询

测试节点下线

此时状态为 Yellow。

写在最后

这是该系列的第一篇,参考了一鸣的课程并进行修改优化,未来会持续更新该系列,欢迎关注👏🏻

同时欢迎关注公众号:LanTech指南。不定时分享职场思考、独立开发日志、大厂方法论和后端经验❤️

参考

  1. github.com/onebirdrock…