Elasticsearch快速上手與深度進階:一站式實戰教程

目錄

1. Elasticsearch 簡介

2. 安裝與啟動

方式 1:Docker 快速安裝(推薦)

方式 2:手動安裝

3. 基礎操作

3.1 創建索引

3.2 插入文檔

3.3 查詢文檔

3.4 更新文檔

3.5 刪除文檔

4. 高級查詢

4.1 布爾查詢

4.2 范圍查詢

4.3 通配符查詢

5. 聚合分析

5.1 統計年齡分布

5.2 計算平均值

6. 自定義分析器

6.1 創建分詞器

6.2 應用分析器到索引

7. 集群管理

7.1 啟用集群發現

7.2 添加節點

8. 安全配置(基礎)

8.1 生成證書

8.2 創建用戶

8.3 啟用 HTTPS

9. 性能優化

9.1 索引優化

9.2 冷熱架構

10. 實戰案例

案例:電商商品搜索


Elasticsearch 的分步教程,涵蓋從基礎到進階的核心內容,適合快速上手和實踐。


1. Elasticsearch 簡介

  • 是什么:基于 Lucene 的分布式搜索和分析引擎,支持全文搜索、結構化搜索、聚合分析。
  • 核心概念
    • 索引(Index):類似數據庫的表,存儲文檔的集合。
    • 文檔(Document):JSON 格式的數據條目,類似數據庫中的行。
    • 類型(Type,7.x+ 已棄用):曾用于區分文檔結構,現統一為?_doc
    • 分片(Shard):索引拆分的子單元,分布式存儲和并行處理。
    • 副本(Replica):分片的備份,提高可用性和容錯性。

2. 安裝與啟動

方式 1:Docker 快速安裝(推薦)
# 拉取 Elasticsearch 鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.16.0# 啟動容器(默認端口 9200)
docker run -d --name es -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:7.16.0
方式 2:手動安裝
  1. 下載 Elasticsearch 包:Download Elasticsearch | Elastic
  2. 解壓并運行:
    cd elasticsearch-7.16.0
    bin/elasticsearch
    

3. 基礎操作

3.1 創建索引
# 創建名為 "users" 的索引
curl -X PUT "localhost:9200/users"
3.2 插入文檔
# 插入一條用戶數據
curl -X POST "localhost:9200/users/_doc" -H 'Content-Type: application/json' -d'
{"name": "張三","age": 30,"email": "zhangsan@example.com"
}'
3.3 查詢文檔
# 查找所有文檔
curl -X GET "localhost:9200/users/_doc/_search?pretty"# 根據 ID 查詢
curl -X GET "localhost:9200/users/_doc/1?pretty"
3.4 更新文檔
curl -X POST "localhost:9200/users/_doc/1/_update" -H 'Content-Type: application/json' -d'
{"doc": {"age": 31}
}'
3.5 刪除文檔
curl -X DELETE "localhost:9200/users/_doc/1"

4. 高級查詢

4.1 布爾查詢
{"query": {"bool": {"must": [{"match": {"name": "張三"}}],"filter": [{"range": {"age": {"gte": 25}}}]}}
}
4.2 范圍查詢
{"query": {"range": {"age": {"gte": 20,"lte": 30}}}
}
4.3 通配符查詢
{"query": {"wildcard": {"email": "*example.com"}}
}

5. 聚合分析

5.1 統計年齡分布
{"aggs": {"age_distribution": {"histogram": {"field": "age","interval": 10}}}
}
5.2 計算平均值
{"aggs": {"average_age": {"avg": {"field": "age"}}}
}

6. 自定義分析器

6.1 創建分詞器
{"analysis": {"analyzer": {"custom_keyword": {"type": "keyword","tokenizer": "keyword"}}}
}
6.2 應用分析器到索引
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"default_search": {"type": "standard"},"default_index": {"type": "custom_keyword"}}}}
}'

7. 集群管理

7.1 啟用集群發現

編輯?elasticsearch.yml

cluster.name: my-es-cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1:9300"]
7.2 添加節點

在另一臺機器啟動 Elasticsearch 并配置相同?cluster.name,節點會自動加入集群。


8. 安全配置(基礎)

8.1 生成證書
bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
8.2 創建用戶
bin/elasticsearch-users useradd es_admin -p admin123 -r superuser
8.3 啟用 HTTPS

編輯?elasticsearch.yml

xpack.security.enabled: true
http.ssl.enabled: true
http.ssl.key: path/to/es-node.jks

9. 性能優化

9.1 索引優化
# 強制合并分段
curl -X POST "localhost:9200/users/_forcemerge?max_num_segments=1"
9.2 冷熱架構

使用 ILM(Index Lifecycle Management)策略將數據遷移至冷存儲。


10. 實戰案例

案例:電商商品搜索
  1. 創建索引并定義映射:
    {"mappings": {"dynamic": false,"properties": {"title": {"type": "text"},"price": {"type": "float"},"category": {"type": "keyword"}}}
    }
    
  2. 插入商品數據:
    curl -X POST "localhost:9200/products/_doc" -d'
    {"title": "iPhone 14 Pro","price": 9999.0,"category": "electronics"
    }'
    
  3. 全文搜索:
    {"query": {"match": {"title": "iPhone 14"}}
    }
    

建議結合實際項目場景深入練習,并關注官方更新以獲取最新特性!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72942.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

聞所聞盡:穿透聲音的寂靜,照見生命的本真

在《楞嚴經》的梵音繚繞中,"聞所聞盡"四個字如晨鐘暮鼓,叩擊著每個修行者的心門。這個源自觀世音菩薩耳根圓通法門的核心概念,既是佛門修行的次第指引,更蘊含著東方哲學對生命本質的終極叩問。當我們穿越時空的帷幕&…

回溯法經典練習:組合總和的深度解析與實戰

回溯法經典練習:組合總和的深度解析與實戰 引言 在算法世界里,回溯法(Backtracking)是解決 組合、排列、子集 等問題的神器。而 “組合總和”(Combination Sum) 問題,更是回溯算法中的經典代表…

傳感器研習社:Swift Navigation與意法半導體(STMicroelectronics)合作 共同推出端到端GNSS汽車自動駕駛解決方案

自動駕駛系統單純依賴感知傳感器進行定位在遇到惡劣天氣或缺乏車道標線的道路場景時很容易失效。此外,由于激光雷達(LiDAR)、視覺等傳感器的成本高昂以及將眾多不同組件整合為統一系統的復雜性,都可能增加產品研發成本或延遲產品上…

【人工智能】Ollama 的 API 操作指南:打造個性化大模型服務

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著人工智能技術的飛速發展,大型語言模型(LLM)在自然語言處理領域的應用日益廣泛。然而,傳統的云端模型服務往往面臨數據隱私、成本高…

Linux關機重啟二三事

、、 1概述 故障是高可用組最常接觸的場景,其中包含了進程故障,網絡故障、系統故障,硬件故障。掉電、關機和重啟作為其中最常見的系統故障,具體的細節還是有些許差異的。本文將從操作系統與主板的行為講解三者之間的聯系與區別。…

算法1--兩束求和

題目描述 解題思路 先說一種很容易想到的暴力解法 暴力解法的思路很簡單,就是遍歷數組,對于每一個元素,都去遍歷數組中剩下的元素,判斷是否有兩個元素的和等于目標值,如果有,就返回這兩個元素的下標。 c…

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和騰訊翻譯插件讓英文網頁顯示中文翻譯

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和騰訊翻譯插件讓英文網頁顯示中文翻譯 應用——系統工具——終端 suozhangfedora:~$ rpm -aq | grep firefox firefox-131.0.2-1.fc41.x86_64 firefox-langpacks-131.0.2-1.fc41.x86_64 fedora41系統自身安裝有f…

android 接入google 登錄

在 Android 應用中接入 Google 登錄功能,可讓用戶使用他們的 Google 賬號快速登錄應用。以下是詳細的接入步驟和示例代碼: 步驟 1:創建 Google API 項目 訪問 Google API 控制臺,并使用你的 Google 賬號登錄。點擊 “選擇項目”,然后點擊 “新建項目”,按照提示填寫項目…

Redis緩存與數據庫 數據一致性保障

為什么要保證數據一致性 只要使用redis做緩存,就必然存在緩存和DB數據一致性問題。若數據不一致,則業務應用從緩存讀取的數據就不是最新數據,可能導致嚴重錯誤。比如將商品的庫存緩存在Redis,若庫存數量不對,則下單時…

19.哈希表的實現

1.哈希的概念 哈希(hash)?稱散列,是?種組織數據的?式。從譯名來看,有散亂排列的意思。本質就是通過哈希函數把關鍵字Key跟存儲位置建??個映射關系,查找時通過這個哈希函數計算出Key存儲的位置,進?快速查找。 1.2.直接定址法…

IoTDB TTL不生效

問題 時序數據庫 IoTDB 1.3.0 版本數據庫的 TTL 設置為兩天,show databases details 看到設置也是正確的,怎么還是可以查到好幾天前的數據?因為有很多不活躍的測點,所以專門設置了兩天過期,有什么辦法可以自動清理呢&…

【C++基礎】Lambda 函數 基礎知識講解學習及難點解析

一、引入 在 C 中,我們通常使用函數來完成特定的功能。但有時候,我們需要在一個函數內部定義一個小型的功能塊,這時如果單獨寫一個函數會顯得繁瑣。C11 引入了 Lambda 函數,它是一種匿名函數,可以在需要的地方直接定義…

OpenCV 基礎模塊 Python 版

OpenCV 基礎模塊權威指南(Python 版) 一、模塊全景圖 plaintext OpenCV 架構 (v4.x) ├─ 核心層 │ ├─ core:基礎數據結構與操作(Mat/Scalar/Point) │ └─ imgproc:圖像處理流水線(濾…

iStoreOS軟路由對硬盤格式化分區(轉化ext4)

一、為什么要格式化分區? 格式化硬盤分區是軟路由安裝或配置過程中的重要步驟,主要用于清除舊數據、優化文件系統、確保系統穩定性和兼容性。 二、通過iStoreOS硬盤格式化步驟 使用場景:Docker遷移到外置移動硬盤為例,考慮兼容現…

打造用戶認證系統,構筑信息安全防線

在當今的數字化時代,信息安全和用戶隱私保護變得越來越重要。用戶身份認證是確保信息安全的第一道防線。通過驗證用戶身份,可以防止未經授權的訪問和數據泄露。它有助于保護用戶的個人信息、賬戶資金和其他敏感數據。此外,用戶身份認證還可以…

北京南文觀點:品牌如何搶占AI 認知的 “黃金節點“

在算法主導的信息洪流中,品牌正在經歷一場隱蔽的認知權爭奪戰,當用戶向ChatGPT咨詢"哪家新能源車企技術最可靠"時,AI調取的知識圖譜數據源將直接決定品牌認知排序。南文樂園科技文化(北京)有限公司&#xff…

音視頻系列——Websockets接口封裝為Http接口

模型服務示例:實時語音轉文本服務 本示例展示一個支持雙協議(WebSocket流式接口HTTP同步接口)的語音轉文本模型服務,并提供將WebSocket接口封裝為HTTP接口的代碼實現。 一、服務架構設計 #mermaid-svg-nw0dMZ4uKfS4vGZR {font-fa…

Axure項目實戰:智慧城市APP(一)(動態面板、拖動效果)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! 課程主題:智慧城市APP便民服務平臺 主要內容:完整智慧APP原型設計 應用場景:各類政務型、B端APP均可參考 案例展示:&…

MySQL 入門大全:數據類型

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/literature?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,…

Java 記憶鏈表,LinkedList 的升級版

文章目錄 記憶鏈表 MemoryLinkedList實戰源代碼 眾所周知,ArrayList 和 LinkedList 是 Java 集合中兩個基本的數據結構,對應數據結構理論中的數組和鏈表。但在這兩個數據結構,開發者們通常使用 ArrayList,而不使用 LinkedList。JD…