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

相关推荐
GetcharZp5 小时前
玩转 Linux 机器视觉:手把手带你搞定 Ubuntu 下海康工业相机 C++ SDK
后端
星星在线8 小时前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒9 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x9 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
袋鱼不重10 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
用户83562907805111 小时前
使用 Python 操作 Word 内容控件
后端·python
像我这样帅的人丶你还11 小时前
啥? 前端也要会干Java?🛵🛵🛵
后端
Hommy8811 小时前
【剪映小助手】添加贴纸接口(Add Sticker)
后端·github·剪映小助手·视频剪辑自动化·剪映api
大志哥12311 小时前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch