Elasticsearch(简称 ES)是一个基于 Lucene 的分布式搜索引擎,专注于全文检索、数据分析和实时日志处理。它具备以下核心优势:
与传统数据库相比,Elasticsearch 在搜索和分析场景中表现更出色:
特性 | 传统数据库 | Elasticsearch |
---|---|---|
搜索速度 | 较慢(B+树索引) | 极快(倒排索引) |
扩展性 | 垂直扩展为主 | 水平扩展随意加节点 |
数据规模 | 适合结构化数据 | PB级非结构化数据 |
高可用 | 依赖主从复制 | 分片+副本自动容灾 |
索引相当于数据库,用于存储特定类型的文档。
# 创建索引
PUT /products
文档是 ES 中最小的数据单位,使用 JSON 格式存储。
# 插入文档
POST /products/_doc/1
{
"name": "iPhone 15",
"price": 7999,
"brand": "Apple"
}
# 创建带分片和副本的索引
PUT /products
{
"settings": {
"number_of_shards": 3, # 3 个分片
"number_of_replicas": 1 # 每个分片 1 个副本
}
}
PUT /users
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
}
}
POST /users/_doc/1
{
"name": "张三",
"age": 25,
"city": "北京"
}
GET /users/_doc/1
GET /users/_search
{
"query": {
"match_all": {}
}
}
GET /users/_search
{
"query": {
"match": {
"city": "北京"
}
}
}
POST /users/_update/1
{
"doc": {
"age": 26
}
}
DELETE /users/_doc/1
Elasticsearch 是一个功能强大的分布式搜索引擎,适用于多种搜索和数据分析场景。通过本文,你已经掌握了 ES 的核心概念和基本操作。接下来可以深入学习以下内容:
如果你在实践过程中遇到问题,欢迎在评论区留言讨论!一起探索 Elasticsearch 的更多可能性吧!