文章目錄
- 一、為什么學ElasticSearch?
- 1.ElasticSearch 簡介
- 2.ElasticSearch 與傳統數據庫的對比
- 3.ElasticSearch 應用場景
- 4.ElasticSearch 技術特點
- 5.ElasticSearch 市場表現
- 6.ElasticSearch 的發展
- 二、認識和安裝ES
- 1.認識 Elasticsearch(簡稱 ES)
- 2.ElasticSearch 與 ELK Stack
- 3.安裝 Elasticsearch(tar包)
- 4.安裝 Kibana
- 5.使用 Kibana 進行操作
- 6.安裝過程中的注意事項
- 7.總結
一、為什么學ElasticSearch?
1.ElasticSearch 簡介
- ElasticSearch 是一個分布式、高性能的搜索引擎,廣泛應用于大數據檢索、日志分析、實時搜索等場景。
- 與傳統數據庫相比,ElasticSearch 對于大規模數據的處理具有顯著優勢,特別是模糊查詢、分詞分析、語義理解等復雜搜索任務。
2.ElasticSearch 與傳統數據庫的對比
- 數據庫查詢問題:使用傳統數據庫做模糊查詢時,隨著數據量增大,響應時間會顯著變慢,尤其是當數據量達到幾十萬、百萬時,響應時間甚至可能達到上百毫秒。
- ElasticSearch 優勢:ElasticSearch 在進行類似商品搜索、代碼庫搜索、全文檢索等任務時,響應時間較短,甚至在數據量達到千萬級時仍然能夠保持較快的搜索速度。ElasticSearch 的查詢速度與數據量的關系較小,性能優秀。
3.ElasticSearch 應用場景
- 電商商品搜索:例如黑馬商城中的商品搜索,使用數據庫進行模糊查詢時,響應時間大約為 100 毫秒,但使用 ElasticSearch 后,響應時間大幅度降低至 20 毫秒左右,即便數據量增加,搜索速度依然保持較快。
- 代碼托管平臺(如 GitHub):GitHub 中有數十億行代碼,ElasticSearch 支持快速高效地從大量數據中檢索出相關內容,遠超過傳統數據庫的查詢能力。
- 百度、谷歌搜索:搜索引擎能夠根據用戶輸入的關鍵字匹配相似或相關內容,而不僅僅是精確匹配。通過分詞和語義分析,ElasticSearch 能處理復雜的搜索需求。
- 地理位置搜索:如打車軟件通過用戶的地理位置快速查找附近的車輛,ElasticSearch 提供了強大的地理坐標搜索功能,能夠實時返回附近的車輛信息。
4.ElasticSearch 技術特點
- 開源免費:ElasticSearch 是一個完全開源且免費的搜索引擎,用戶可以在無需付費的情況下自由使用。
- 分布式架構:支持分布式部署,具有高可用性,能夠處理海量數據。
- 高效能:即使在數據量極大的情況下,ElasticSearch 也能夠保持較快的查詢速度,尤其適用于大規模的全文檢索、日志分析等場景。
- 全文檢索:ElasticSearch 支持強大的全文檢索能力,能夠進行模糊匹配、語義理解、分詞分析等。
5.ElasticSearch 市場表現
- 市場地位:ElasticSearch 連續多年穩居全球搜索引擎技術的排名第一,超越了傳統的 Solar 等搜索引擎。其強大的性能和靈活的應用,使其成為大數據處理和實時搜索的首選工具。
6.ElasticSearch 的發展
- 從 2016 年起,ElasticSearch 逐漸超越了 Solar,成為開源搜索引擎領域的領導者。隨著開源軟件社區的不斷貢獻,ElasticSearch 的功能和性能不斷增強,保持了行業領先地位。
通過學習 ElasticSearch,能夠幫助我們應對各種大數據搜索需求,特別是在電商、社交平臺、代碼托管、日志分析等多個行業中發揮重要作用。
二、認識和安裝ES
1.認識 Elasticsearch(簡稱 ES)
1.1 Lucene:Elasticsearch 的底層技術是 Lucene,它是一個由 Apache 維護的基于 Java 的搜索引擎庫,提供了創建搜索引擎的 API 工具包。
官方網址:https://lucene.apache.org
- 優勢:Lucene 提供了高性能的搜索引擎功能,并且易于擴展。
- 倒排索引:Lucene 使用倒排索引技術,使得數據的搜索非常高效。
1.2 Elasticsearch(ES):
- 起源:ES 是基于 Lucene 開發的,最初由 Shay Banon 于 2004 年創建,最初名為 Compass,后來重寫并更名為 Elasticsearch。
- 核心特性:ES 支持分布式架構,能夠做水平擴展,支持集群部署,能夠存儲海量數據并高效搜索。
- 開發語言:雖然 Lucene 是用 Java 寫的,ES 也采用 Java 開發,但它通過 RESTful API 提供跨語言的訪問接口,支持多種編程語言進行操作。
- 當前版本:ES 最新版本為 8.x,但在國內的企業中,較為常用的是 6.x 和 7.x 版本,主要是因為 API 穩定性。
- 官方網址:https://www.elastic.co/cn/
2.ElasticSearch 與 ELK Stack
- ELK Stack:
- ELK 代表 Elasticsearch、Logstash 和 Kibana:
- Elasticsearch:用于存儲、計算和搜索數據。
- Logstash:用于數據抓取和處理。
- Kibana:用于數據可視化展示。
- ELK 代表 Elasticsearch、Logstash 和 Kibana:
- 使用場景:
- 日志數據分析
-
- 實時監控
- 實時監控
-
- 大規模微服務的日志管理和監控
3.安裝 Elasticsearch(tar包)
- 安裝方式:可以通過多種方式安裝 Elasticsearch,這里采用 Docker 進行安裝。
- 沒有tar包也可以直接拉取鏡像,詳細操作請觀看下一篇筆記
- 將 tar 包復制到虛擬機根目錄下
- 導入鏡像
docker load -i es.tar
docker load -i kibana.tar
- 查看鏡像是否導入成功,導入成功建議刪除 tar 包,內存占用大
docker images
- 刪除 tar 包
rm -rf *.tar
ll
Docker 安裝命令:
docker run -d \--name es \-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \-e discovery.type=single-node \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network hm-net \ # 這里是自己設置的網絡-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1
- 環境變量配置:
ES_JAVA_OPTS
用于設置內存,discovery.type=single-node
用于單機模式啟動。 - 端口映射:9200 用于 HTTP 接口,9300 用于集群通信。
- 查看容器運行情況
docker ps
- 查看日志
docker logs -f es
- 驗證安裝:
- 通過訪問
http://虛擬機 IP 地址:9200
可以確認 Elasticsearch 是否成功啟動。若返回 JSON 格式的響應信息,證明安裝成功。
- 通過訪問
4.安裝 Kibana
- Kibana 安裝命令:
docker run -d \--name kibana \-e ELASTICSEARCH_HOSTS=http://es:9200 \--netwwork=hm-net \ # 這里是自己設置的網絡-p 5601:5601 \kibana:7.12.1
- 注意:es 和 kibana 需在一個網絡里面,如果不在一個網絡里面,按照以下步驟操作:
docker network create [網絡名]
docker network connect [網絡名] kibana
docker network connect [網絡名] es
- 配置說明:
ELASTICSEARCH_HOSTS
配置為 Elasticsearch 的地址,9200
為 ES 服務端口,5601
為 Kibana 提供的 Web 服務端口。
- 查看日志:
docker logs -f kibana
- 驗證 Kibana 安裝:
- 通過訪問
http://虛擬機 ip 地址:5601
可以訪問 Kibana 的圖形化界面。
- 通過訪問
5.使用 Kibana 進行操作
-
開發工具(Dev Tools):Kibana 提供了開發工具面板,允許用戶直接向 Elasticsearch 發送 HTTP 請求進行數據增刪改查等操作,而無需記住每個請求的具體路徑和參數。
- 例如,使用
GET /
請求可以查看 Elasticsearch 的基本信息。
- 例如,使用
- 好處:
- 簡化操作:無需手動構造復雜的請求路徑和參數。
- 代碼提示:Kibana 提供了智能提示,幫助用戶構建請求。
6.安裝過程中的注意事項
- Docker 鏡像:
- 鏡像大小較大,下載較慢,可以直接使用提供的鏡像文件進行導入。
- 支持 Windows 系統的 Docker 環境,Mac 系統(尤其是 M2 芯片)需要注意鏡像兼容性問題。
- 內存配置:
- Elasticsearch 默認使用 1GB 內存,建議根據電腦配置調整內存大小,避免占用過多資源。最低推薦內存為 512MB。
7.總結
- 本章內容主要是介紹了 Elasticsearch 的基礎知識、它的起源以及如何安裝和配置 Elasticsearch 和 Kibana。
- 安裝過程中使用 Docker 是一種方便快捷的方式,可以輕松啟動單機模式的 Elasticsearch 服務,并結合 Kibana 進行可視化操作。
- 在企業生產環境中,ELK Stack 組合被廣泛用于日志管理和實時監控,幫助開發者有效地處理大規模的日志數據。