ElasticSearch 是一个分布式、RESTful 风格的搜索和分析引擎,广泛应用于日志分析、全文检索、实时数据分析等场景。
本文将从索引管理、文档增删改查、数据检索与聚合分析等核心操作出发,结合实战示例,帮助开发者快速掌握 ElasticSearch 的基础使用与进阶技巧。
一、ElasticSearch 核心概念解析
1. 索引(Index)
- 类似于数据库中的“数据库”,是文档的逻辑容器。
- 每个索引可以配置分片(Shard)和副本(Replica),支持水平扩展与高可用。
2. 文档(Document)
- 最小的数据单元,以 JSON 格式存储。
- 每个文档属于一个类型(Type,7.x 后移除),并拥有唯一 ID。
3. 倒排索引(Inverted Index)
- ElasticSearch 的核心机制,通过关键词反向定位文档位置,实现高效检索。
二、索引管理:创建、配置与维护
1. 创建索引
# 使用默认配置创建索引
PUT /my_index
# 自定义分片与副本配置
PUT /my_index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
2. 查看索引信息
# 查看所有索引
GET /_cat/indices?v
# 查看特定索引详情
GET /my_index/_settings
GET /my_index/_mapping
3. 删除索引
# 删除单个索引
DELETE /my_index
# 批量删除索引(支持通配符)
DELETE /my_index*,logs-*
4. 索引模板(Index Template)
用于定义新索引的默认配置和映射规则:
image.png
PUT /_template/my_template
{
"index_patterns": ["logs-*", "metrics-*"],
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"timestamp": { "type": "date" }
}
}
}
5. 索引别名(Alias)
实现索引的逻辑分组与无缝切换:
# 为索引添加别名
POST /_aliases
{
"actions": [
{ "add": { "index": "v1", "alias": "current" } }
]
}
# 查询别名指向的索引
GET /current/_alias
三、文档操作:增删改查全场景覆盖
1. 插入文档
(1)自动生成 ID
POST /my_index/_doc/
{
"title": "ElasticSearch 入门",
"content": "分布式搜索引擎的核心原理与实践"
}
(2)手动指定 ID
PUT /my_index/_doc/1001
{
"title": "高性能搜索",
"tags": ["ES", "大数据"]
}
2. 查询文档
(1)通过 ID 查询
GET /my_index/_doc/1001
(2)条件查询(Query DSL)
POST /my_index/_search
{
"query": {
"match": {
"title": "ElasticSearch"
}
}
}
3. 更新文档
(1)全量替换
PUT /my_index/_doc/1001
{
"title": "ElasticSearch 核心技术",
"tags": ["搜索", "分析"]
}
[图片上传中...(image.png-18ff6b-1747618265546-0)]