Elasticsearch 入门指南

Elasticsearch 入门指南

一、什么是 Elasticsearch?

Elasticsearch(简称 ES)是一个开源的分布式搜索引擎,专门用于:

  • 快速搜索海量数据
  • 分析日志和指标
  • 实现智能搜索建议
  • 处理地理位置搜索

🎯 核心优势:

  • 速度快:百万级数据搜索仅需毫秒级响应
  • 易扩展:支持水平扩展,轻松应对数据增长
  • 简单易用:通过 RESTful API 操作

二、核心概念图解

1. 基本术语

概念 类比 说明
索引(Index) 数据库 数据容器(如:products)
文档(Document) 表行 基本数据单位(JSON格式)
字段(Field) 表列 文档的属性(如:name, price)
分片(Shard) 分区 数据分割单元(提高并行能力)

2. 与传统数据库对比

关系型数据库 数据库Database 表Table 行Row 列Column Elasticsearch 索引Index 文档Document 字段Field

三、快速安装(单机版)

  1. 下载 Elasticsearch(需 Java 环境):
bash 复制代码
https://www.elastic.co/downloads/elasticsearch
  1. 解压并启动:
bash 复制代码
tar -xzf elasticsearch-8.10.2-linux-x86_64.tar.gz
cd elasticsearch-8.10.2/bin
./elasticsearch
  1. 验证运行:

    http://localhost:9200

返回JSON信息表示成功!

四、基础操作入门

1. 创建索引(类似建表)

bash 复制代码
# 创建商品索引
PUT /products
{
"settings": {
"number_of_shards": 1# 分片数(入门用1个即可)
},
"mappings": {
"properties": {
"name": {"type": "text"},
"price": {"type": "float"},
"category": {"type": "keyword"}
}
}
}

2. 添加文档(插入数据)

bash 复制代码
# 添加一个商品
POST /products/_doc/1
{
"name": "无线蓝牙耳机",
"price": 299.0,
"category": "电子产品"
}

# 批量添加(推荐)
POST /products/_bulk
{"index":{}}
{"name":"运动水杯","price":89.9,"category":"生活用品"}
{"index":{}}
{"name":"编程书籍","price":59.0,"category":"图书"}

3. 搜索文档

bash 复制代码
# 简单搜索(查找所有)
GET /products/_search

# 条件搜索(查找价格低于100的商品)
GET /products/_search
{
"query": {
"range": {
"price": {"lte": 100}
}
}
}

五、实战案例:商品搜索系统

场景需求

  • 支持商品名称模糊搜索
  • 按价格范围过滤
  • 按分类筛选

1. 创建增强版商品索引

bash 复制代码
PUT /shop_products
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_smart"# 中文分词
},
"price": {"type": "float"},
"category": {"type": "keyword"}, # 精确匹配
"stock": {"type": "integer"}
}
}
}

2. 添加测试数据

bash 复制代码
POST /shop_products/_bulk
{"index":{}}
{"name":"Apple iPhone 14","price":5999,"category":"手机","stock":100}
{"index":{}}
{"name":"华为MateBook笔记本","price":6899,"category":"电脑","stock":50}
{"index":{}}
{"name":"小米蓝牙音箱","price":199,"category":"数码配件","stock":200}
{"index":{}}
{"name":"耐克运动鞋","price":899,"category":"鞋服","stock":80}

3. 实现综合搜索

bash 复制代码
GET /shop_products/_search
{
"query": {
"bool": {
"must": [
{"match": {"name": "蓝牙"}}# 名称包含"蓝牙"
],
"filter": [
{"range": {"price": {"gte": 100, "lte": 500}}}, # 价格100-500
{"term": {"category": "数码配件"}}# 分类精确匹配
]
}
}
}

4. 搜索结果解析

json 复制代码
{
"took": 15,// 耗时15毫秒
"hits": {
"total": {
"value": 1,// 找到1个匹配商品
"relation": "eq"
},
"hits": [
{
"_source": {
"name": "小米蓝牙音箱",
"price": 199,
"category": "数码配件",
"stock": 200
}
}
]
}
}

六、常见使用场景

  1. 网站搜索
bash 复制代码
GET /articles/_search
{
"query": {"match": {"content": "人工智能"}}
}
  1. 日志分析
bash 复制代码
# 统计错误日志数量
GET /app-logs/_search
{
"query": {"term": {"level": "ERROR"}},
"size": 0# 不返回具体文档
}
  1. 自动补全
bash 复制代码
GET /products/_search
{
"suggest": {
"product_suggestion": {
"prefix": "蓝",
"completion": {"field": "name_suggest"}
}
}
}

七、学习路径建议

  1. 掌握基础操作(CRUD+搜索)
  2. 理解分词器(中文用 ik 插件)
  3. 学习组合查询(bool 查询)
  4. 探索聚合分析(统计计算)
  5. 部署集群生产环境

💡 新手提示:

  • 从单机版开始学习
  • 使用 Kibana 控制台操作(更直观)
  • 实际项目从简单搜索开始
  • 官方文档是最好的学习资源

Elasticsearch 是现代应用必备的搜索技术,通过本文案例您已掌握基础操作。下一步可以尝试部署实际项目,体验其强大的搜索分析能力!

相关推荐
全栈陈序员30 分钟前
【Git】从入门到精通(六)—— git commit:提交到版本库
大数据·git·elasticsearch
真上帝的左手38 分钟前
30. 技术专题-‌应用框架组件-搜索引擎-ES
大数据·分布式·elasticsearch·搜索引擎·中间件
Elasticsearch42 分钟前
两条规则,一次故障,一条告警:变点检测如何减少告警噪声
elasticsearch
实名上网宋凯宣9 小时前
Django
后端·python·django
天河归来10 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
利威尔xu11 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
GlobalInfo11 小时前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人
逃逸线LOF11 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间12 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu12 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang