B站對應視頻:
Elasticsearch01-01.為什么學習elasticsearch_嗶哩嗶哩_bilibili
大多數日常項目,搜索肯定是訪問頻率最高的頁面之一。目前搜索功能是基于數據庫的模糊搜索來實現的,存在很多問題。
首先,查詢效率較低。
由于數據庫模糊查詢不走索引,在數據量較大的時候,查詢性能很差。
改為基于搜索引擎后速度會有顯著提升。
需要注意的是,數據庫模糊查詢隨著表數據量的增多,查詢性能的下降會非常明顯,而搜索引擎的性能則不會隨著數據增多而下降太多。
其次,功能單一
數據庫的模糊搜索功能單一,匹配條件非常苛刻,必須恰好包含用戶搜索的關鍵字。而在搜索引擎中,用戶輸入出現個別錯字,或者用拼音搜索、同義詞搜索都能正確匹配到數據。
綜上,在面臨海量數據的搜索,或者有一些復雜搜索需求的時候,推薦使用專門的搜索引擎來實現搜索功能。
目前全球的搜索引擎技術排名如下:
排名第一的就是我們今天要學習的elasticsearch.
elasticsearch是一款非常強大的開源搜索引擎,支持的功能非常多,例如:
代碼搜索
商品搜索
解決方案搜索
地圖搜索
通過今天的學習大家要達成下列學習目標:
-
理解倒排索引原理
-
會使用IK分詞器
-
理解索引庫Mapping映射的屬性含義
-
能創建索引庫及映射
-
能實現文檔的CRUD
1.初識elasticsearch
Elasticsearch的官方網站如下:
https://www.elastic.co/cn/elasticsearch/
本章我們一起來初步了解一下Elasticsearch的基本原理和一些基礎概念。
1.1.認識和安裝
Elasticsearch是由elastic公司開發的一套搜索引擎技術,它是elastic技術棧中的一部分。完整的技術棧包括:
-
Elasticsearch:用于數據存儲、計算和搜索
-
Logstash/Beats:用于數據收集
-
Kibana:用于數據可視化
整套技術棧被稱為ELK,經常用來做日志收集、系統監控和狀態分析等等:
整套技術棧的核心就是用來存儲、搜索、計算的Elasticsearch,因此我們接下來學習的核心也是Elasticsearch。
我們要安裝的內容包含2部分:
-
elasticsearch:存儲、搜索和運算
-
kibana:圖形化展示
首先Elasticsearch不用多說,是提供核心的數據存儲、搜索、分析功能的。
然后是Kibana,Elasticsearch對外提供的是Restful風格的API,任何操作都可以通過發送http請求來完成。不過http請求的方式、路徑、還有請求參數的格式都有嚴格的規范。這些規范我們肯定記不住,因此我們要借助于Kibana這個服務。
Kibana是elastic公司提供的用于操作Elasticsearch的可視化控制臺。它的功能非常強大,包括:
-
對Elasticsearch數據的搜索、展示
-
對Elasticsearch數據的統計、聚合,并形成圖形化報表、圖形
-
對Elasticsearch的集群狀態監控
-
它還提供了一個開發控制臺(DevTools),在其中對Elasticsearch的Restful的API接口提供了語法提示
1.1.1.安裝elasticsearch
通過下面的Docker命令即可安裝單機版本的elasticsearch:
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
注意,這里我們采用的是elasticsearch的7.12.1版本,由于8以上版本的JavaAPI變化很大,在企業中應用并不廣泛,企業中應用較多的還是8以下的版本。
如果拉取鏡像困難,可以直接使用這個鏡像tar包(所有資料在文章末尾可以一次性提取):
安裝完成后,訪問9200端口,即可看到響應的Elasticsearch服務的基本信息: