新手必看!Elasticsearch 使用指南
作者:DevOps運(yùn)維實(shí)戰(zhàn)
Elasticsearch(簡稱 ES)采用 JSON 文檔存儲,支持 水平擴(kuò)展,具備 近實(shí)時(shí)(NRT, Near Real-Time)搜索 能力。
Elasticsearch(簡稱 ES)是一個(gè)基于 Lucene 構(gòu)建的 分布式搜索和分析引擎,主要用于:
- 全文檢索(支持模糊搜索、高亮顯示)
- 日志和指標(biāo)分析(如 ELK 棧中的日志存儲)
- 實(shí)時(shí)數(shù)據(jù)分析(聚合、可視化)
- 自動補(bǔ)全、推薦系統(tǒng)
它采用 JSON 文檔存儲,支持 水平擴(kuò)展,具備 近實(shí)時(shí)(NRT, Near Real-Time)搜索能力。
一、核心功能詳解
1. 全文檢索
- 倒排索引:快速定位包含關(guān)鍵詞的文檔。
- 分詞器(Analyzer):支持中文(IK 分詞器)、英文等語言處理。
- 相關(guān)性評分(TF-IDF/BM25):按匹配度排序結(jié)果。
2. 分布式架構(gòu)
- 分片(Shard):數(shù)據(jù)水平拆分,提高并發(fā)能力。
- 副本(Replica):保障高可用,防止數(shù)據(jù)丟失。
- 集群發(fā)現(xiàn):自動節(jié)點(diǎn)發(fā)現(xiàn)和負(fù)載均衡。
3. 數(shù)據(jù)分析
- 聚合(Aggregation):統(tǒng)計(jì)、分組、計(jì)算百分位數(shù)。
- Pipeline 處理:數(shù)據(jù)轉(zhuǎn)換和再聚合。
4. 實(shí)時(shí)性
- Refresh Interval:默認(rèn) 1 秒刷新索引,可調(diào)整。
- Translog:保障寫入數(shù)據(jù)不丟失。
二、基礎(chǔ)操作
1. 索引管理
創(chuàng)建索引:
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. 聚合分析
統(tǒng)計(jì)商品庫存總和:
GET /products/_search
{
"aggs": {
"total_stock": { "sum": { "field": "stock" } }
}
}
按價(jià)格區(qū)間分組:
GET /products/_search
{
"aggs": {
"price_ranges": {
"range": {
"field": "price",
"ranges": [
{ "to": 500 },
{ "from": 500, "to": 1000 },
{ "from": 1000 }
]
}
}
}
}
責(zé)任編輯:趙寧寧
來源:
DevOps運(yùn)維實(shí)戰(zhàn)