Elasticsearch(简称 ES)采用 JSON 文档存储,支持 水平扩展,具备 近实时(NRT, Near Real-Time)搜索 能力。
Elasticsearch(简称 ES)是一个基于Lucene构建的分布式搜索和分析引擎,主要用于:
全文检索(支持模糊搜索、高亮显示)日志和指标分析(如 ELK 栈中的日志存储)实时数据分析(聚合、可视化)自动补全、推荐系统它采用JSON 文档存储,支持水平扩展,具备近实时(NRT, Near Real-Time)搜索能力。

一、核心功能详解
1. 全文检索
倒排索引:快速定位包含关键词的文档。分词器(Analyzer):支持中文(IK 分词器)、英文等语言处理。相关性评分(TF-IDF/BM25):按匹配度排序结果。2. 分布式架构
分片(Shard):数据水平拆分,提高并发能力。副本(Replica):保障高可用,防止数据丢失。集群发现:自动节点发现和负载均衡。3. 数据分析
聚合(Aggregation):统计、分组、计算百分位数。Pipeline 处理:数据转换和再聚合。4. 实时性
Refresh Interval:默认 1 秒刷新索引,可调整。Translog:保障写入数据不丢失。二、基础操作
1. 索引管理
创建索引:
PUT /products{ "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "properties": { "name": { "type": "text" }, "price": { "type": "double" }, "stock": { "type": "integer" } } }}
查看索引:
GET /products/_settings # 查看配置GET /products/_mapping # 查看字段映射
删除索引:
DELETE /products
2. 文档操作
插入/更新文档:
POST /products/_doc/1{ "name": "Laptop", "price": 999.99, "stock": 100}
查询文档:
GET /products/_doc/1 # 按ID查询GET /products/_search # 查询所有GET /products/_search?q=name:Laptop # 简单搜索
批量操作(Bulk API):
POST /_bulk{ "index" : { "_index" : "products", "_id" : "2" } }{ "name": "Phone", "price": 599.99, "stock": 200 }{ "delete" : { "_index" : "products", "_id" : "1" } }
三、高级搜索功能
1. 查询语法
精确匹配(Term Query):
GET /products/_search{ "query": { "term": { "name.keyword": "Laptop" } }}
全文搜索(Match Query):
GET /products/_search{ "query": { "match": { "name": "lap top" } # 分词后匹配 }}
范围查询(Range Query):
GET /products/_search{ "query": { "range": { "price": { "gte": 500, "lte": 1000 } } }}
2. 聚合分析
统计商品库存总和:
GET /products/_search{ "aggs": { "total_stock": { "sum": { "field": "stock" } } }}
按价格区间分组:
GET /products/_search{ "aggs": { "price_ranges": { "range": { "field": "price", "ranges": [ { "to": 500 }, { "from": 500, "to": 1000 }, { "from": 1000 } ] } } }}
