新手必看!Elasticsearch 使用指南

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" } } } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.

查看索引:

复制
GET /products/_settings # 查看配置 GET /products/_mapping # 查看字段映射1.2.

删除索引:

复制
DELETE /products1.
2. 文档操作

插入/更新文档:

复制
POST /products/_doc/1 { "name": "Laptop", "price": 999.99, "stock": 100 }1.2.3.4.5.6.

查询文档:

复制
GET /products/_doc/1 # 按ID查询 GET /products/_search # 查询所有 GET /products/_search?q=name:Laptop # 简单搜索1.2.3.

批量操作(Bulk API):

复制
POST /_bulk { "index" : { "_index" : "products", "_id" : "2" } } { "name": "Phone", "price": 599.99, "stock": 200 } { "delete" : { "_index" : "products", "_id" : "1" } }1.2.3.4.

三、高级搜索功能

1. 查询语法

精确匹配(Term Query):

复制
GET /products/_search { "query": { "term": { "name.keyword": "Laptop" } } }1.2.3.4.5.6.

全文搜索(Match Query):

复制
GET /products/_search { "query": { "match": { "name": "lap top" } # 分词后匹配 } }1.2.3.4.5.6.

范围查询(Range Query):

复制
GET /products/_search { "query": { "range": { "price": { "gte": 500, "lte": 1000 } } } }1.2.3.4.5.6.
2. 聚合分析

统计商品库存总和:

复制
GET /products/_search { "aggs": { "total_stock": { "sum": { "field": "stock" } } } }1.2.3.4.5.6.

按价格区间分组:

复制
GET /products/_search { "aggs": { "price_ranges": { "range": { "field": "price", "ranges": [ { "to": 500 }, { "from": 500, "to": 1000 }, { "from": 1000 } ] } } } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.

阅读剩余
THE END