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

相关推荐
七夜zippoe1 小时前
轻量级模型实战:使用OpenLLM构建生产级大模型服务
大数据·人工智能·机器学习·架构·openllm
西格电力科技1 小时前
光伏策略控制服务器如何成为电站智慧转型的中枢与关键一步?
运维·服务器·人工智能·分布式·能源
zhangyifang_0091 小时前
Spring中的BeanDefinition
java·后端·spring
Jerry952706281 小时前
3.集群与分布式
分布式·架构·架构师·软考·高性能·高可用·架构设计师
bigdata-rookie1 小时前
Spark 运行架构及相关概念
大数据·架构·spark
beijingliushao2 小时前
101-Spark之Standalone环境安装步骤
大数据·分布式·spark
拓端研究室2 小时前
赢战2025电商新趋势下的增长策略报告:平台格局、跨境趋势、大促消费|附600+份报告PDF、数据、可视化模板汇总下载
大数据·pdf
云 祁2 小时前
Spark SQL 深度优化实战指南:从原理到生产的完整方法论
大数据·数据库·分布式·sql·spark
楠枬2 小时前
负载均衡 -LoadBalance
后端·spring·spring cloud·负载均衡