新手必看!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.
插入/更新文档:
复制
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.
统计商品库存总和:
复制
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