Elasticsearch基础概念
2025/8/15大约 3 分钟
Elasticsearch基础概念
前置知识
在开始本教程之前,建议您具备以下基础知识:
- Java基础语法
- RESTful API基础
- JSON数据格式
- 基本的搜索引擎概念
什么是Elasticsearch?
Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,具有以下特点:
- 分布式:可以部署在多台服务器上,实现高可用和水平扩展
- 全文检索:支持复杂的全文搜索功能
- 实时性:数据写入后近乎实时可被搜索
- 多功能:除搜索外,还支持日志分析、指标监控等场景
核心概念
1. 索引(Index)
索引是文档的集合,类似于关系型数据库中的表。每个索引都有以下特征:
- 包含相似特征的文档集合
- 由一个名字标识(必须小写)
- 在集群中可以有多个索引
// 创建索引
PUT /products
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
}
}
2. 文档(Document)
文档是可被索引的基本信息单元,类似于关系型数据库中的行。特点:
- 采用JSON格式
- 每个文档都有一个唯一的ID
- 文档字段可以灵活增减
// 添加文档
POST /products/_doc
{
"name": "iPhone 13",
"category": "手机",
"price": 5999.00,
"description": "Apple最新款手机",
"created_at": "2023-01-01"
}
3. 字段(Field)
字段是文档中的数据字段,类似于关系型数据库中的列。Elasticsearch支持多种字段类型:
- text:全文本字段,会被分词
- keyword:精确值字段,不分词
- date:日期类型
- long/integer/double:数值类型
- boolean:布尔类型
- object:嵌套对象类型
// 定义字段映射
PUT /products/_mapping
{
"properties": {
"name": { "type": "text" },
"category": { "type": "keyword" },
"price": { "type": "double" },
"description": { "type": "text" },
"created_at": { "type": "date" }
}
}
4. 分片和副本
分片(Shard)
分片是索引的分布式存储单元:
- 每个索引可以分成多个分片
- 分片分布在不同节点上
- 提供水平扩展能力
副本(Replica)
副本是分片的备份:
- 提高系统可用性
- 提升搜索性能
- 实现负载均衡
基本操作
1. 索引管理
// 创建索引
PUT /users
// 删除索引
DELETE /users
// 查看索引
GET /users
2. 文档操作
// 创建文档
POST /users/_doc
{
"name": "张三",
"age": 25,
"email": "zhangsan@example.com"
}
// 查询文档
GET /users/_doc/1
// 更新文档
POST /users/_update/1
{
"doc": {
"age": 26
}
}
// 删除文档
DELETE /users/_doc/1
3. 基本查询
// 精确查询
GET /users/_search
{
"query": {
"term": {
"age": 25
}
}
}
// 全文搜索
GET /users/_search
{
"query": {
"match": {
"name": "张三"
}
}
}
分词器
分词器负责将文本分解成单词(词项)。Elasticsearch内置多种分词器:
- Standard:默认分词器,按单词分割
- Simple:按非字母字符分割
- Whitespace:按空白字符分割
- Language:特定语言的分词器
// 测试分词器
POST /_analyze
{
"analyzer": "standard",
"text": "Elasticsearch是一个强大的搜索引擎"
}
架构原理
1. 节点类型
- 主节点:管理集群状态
- 数据节点:存储数据和执行操作
- 协调节点:处理请求分发
- 摄取节点:数据预处理
2. 集群健康
集群状态有三种颜色:
- 绿色:所有主分片和副本分片都正常运行
- 黄色:所有主分片正常运行,但存在副本分片不可用
- 红色:存在主分片不可用
// 查看集群健康状态
GET /_cluster/health
总结
本文介绍了Elasticsearch的核心概念:
- ✅ 基本概念:索引、文档、字段
- ✅ 分布式特性:分片、副本
- ✅ 基本操作:索引和文档管理
- ✅ 分词系统:内置分词器
- ✅ 架构原理:节点类型和集群健康
下一步学习
- 学习Elasticsearch的Java客户端使用
- 掌握高级查询和聚合分析
- 了解性能优化技巧
希望这篇文章对您有所帮助!如果您有任何问题,欢迎在评论区讨论。