Elasticsearch 入门指南:基础篇Ⅰ

1. 什么是 Elasticsearch?

Elasticsearch(简称 ES)是一个基于 Lucene 的分布式搜索引擎,专注于全文检索、数据分析和实时日志处理。它具备以下核心优势:

  • 🚀 高扩展性:轻松横向扩展,支持 PB 级数据处理。
  • 实时搜索:数据写入后秒级可查。
  • 🔍 全文检索:基于倒排索引,支持复杂搜索场景。

典型应用场景

  • 电商搜索(如商品推荐、模糊搜索)
  • 日志分析(ELK 技术栈)
  • 商业智能(结合 Kibana 进行数据可视化)

2. 为什么选择 Elasticsearch?

与传统数据库相比,Elasticsearch 在搜索和分析场景中表现更出色:

特性传统数据库Elasticsearch
搜索速度较慢(B+树索引)极快(倒排索引)
扩展性垂直扩展为主水平扩展随意加节点
数据规模适合结构化数据PB级非结构化数据
高可用依赖主从复制分片+副本自动容灾

3. Elasticsearch 的核心加速原理

3.1 倒排索引(Inverted Index)

  • 将文档内容拆分为关键词(如 "iPhone" -> 文档1, 文档3)。
  • 类似字典目录,直接跳转到目标文档,大幅提升搜索速度。

3.2 分布式架构

  • 数据拆分为多个 分片(Shard),支持并行处理。
  • 副本(Replica) 机制提升读取性能并保证数据安全。

3.3 缓存机制

  • 文件系统缓存(20% 内存规则)。
  • 聚合结果预计算(Doc Values),加速聚合查询。

3.4 写入优化

  • 分段存储(Segment) + 定期合并,减少磁盘 I/O。
  • 日志结构存储设计,提升写入性能。

4. Elasticsearch 核心概念

4.1 索引(Index)

索引相当于数据库,用于存储特定类型的文档。

# 创建索引
PUT /products

4.2 文档(Document)

文档是 ES 中最小的数据单位,使用 JSON 格式存储。

# 插入文档
POST /products/_doc/1
{
  "name": "iPhone 15",
  "price": 7999,
  "brand": "Apple"
}

4.3 分片(Shard)和副本(Replica)

  • 分片:将数据拆分为多个部分,支持分布式存储和查询。
  • 副本:分片的备份,提升读取性能和数据安全性。
# 创建带分片和副本的索引
PUT /products
{
  "settings": {
    "number_of_shards": 3,    # 3 个分片
    "number_of_replicas": 1   # 每个分片 1 个副本
  }
}

5. Elasticsearch 常用操作

5.1 创建索引

PUT /users
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}

5.2 插入数据

POST /users/_doc/1
{
  "name": "张三",
  "age": 25,
  "city": "北京"
}

5.3 查询数据

1) 根据 ID 查询
GET /users/_doc/1
2) 搜索所有文档
GET /users/_search
{
  "query": {
    "match_all": {}
  }
}
3) 条件查询
GET /users/_search
{
  "query": {
    "match": {
      "city": "北京"
    }
  }
}

5.4 更新数据

POST /users/_update/1
{
  "doc": {
    "age": 26
  }
}

5.5 删除数据

DELETE /users/_doc/1

6. Elasticsearch 的应用场景

  • 日志分析:配合 Logstash 和 Kibana 实现实时日志搜索与分析。
  • 电商搜索:支持模糊搜索、拼写纠错和商品推荐。
  • 数据分析:结合 Kibana 进行数据可视化。
  • 大规模数据存储:轻松处理 PB 级别的非结构化数据。

7. 总结

Elasticsearch 是一个功能强大的分布式搜索引擎,适用于多种搜索和数据分析场景。通过本文,你已经掌握了 ES 的核心概念和基本操作。接下来可以深入学习以下内容:

  • 分布式架构:如何设计高效的集群。
  • 查询优化:提升搜索性能的技巧。
  • 聚合分析:实现复杂的数据分析需求。

如果你在实践过程中遇到问题,欢迎在评论区留言讨论!一起探索 Elasticsearch 的更多可能性吧!💪


参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值