新手必看!Elasticsearch 使用指南
作者:DevOps運維實戰
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 /products2. 文檔操作
插入/更新文檔:
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 }
]
}
}
}
}責任編輯:趙寧寧
來源:
DevOps運維實戰





















