目錄
一、Elasticsearch(ES)介紹
1.為什么需要單獨的搜索服務
2.全文檢索
3.Elasticsearch簡介
1.Elasticsearch的特點
2.應用場景
3.ElasticSearch數據的存儲和搜索原理
二、Elasticsearch(ES)安裝?
1、拉取鏡像
2、創建目錄并給目錄賦權
?3、創建并編輯配置文件
4、 開放防火墻端口9200、9300
5、開放服務器端口
6、啟動ES
三、安裝Kibana
1、準備工作
2、創建配置和腳本
3、服務器放端口訪問
四、安裝ik分詞器
1、安裝包解壓和刪除安裝包
?2、重啟es
3、 測試ik分詞庫是否成功
一、Elasticsearch(ES)介紹
1.為什么需要單獨的搜索服務
-
用戶訪問我們的首頁,一般都會直接搜索來尋找自己想要購買的商品。
-
而商品的數量非常多,而且分類繁雜。如何能正確的顯示出用戶想要的商品,并進行合理的過濾,盡快促成交易,是搜索系統要研究的核心。
-
面對這樣復雜的搜索業務和數據量,使用傳統數據庫搜索就顯得力不從心,一般我們都會使用全文檢索技術Elasticsearch。
2.全文檢索
全文檢索:類似于百度、google等搜索引擎,輸入一個內容,可以很快速的搜索出和內容相關的其他內容,速度快,性能高,查詢范圍大。
檢索及搜索及查詢
數據庫查詢
數據庫查詢其實就是使用select * from xxx 查詢數據庫數據。
數據庫查詢問題
問題1
問題2
通過上述的案例,我們知道使用數據庫查詢數據存在性能低、功能弱等問題,在大數據量的情況下,這些問題將制約搜索操作,而這些問題可以使用倒排索引來解決這些問題,從而提高搜索效率。
倒排索引
例如:
靜夜思
床前明月光,疑是地上霜。 舉頭望明月,低頭思故鄉。
水調歌頭
明月幾時有?把酒問青天。不知天上宮闕,今夕是何年。我欲乘風歸去,又恐瓊樓玉宇,高處不勝寒。起舞弄清影,何似在人間。轉朱閣,低綺戶,照無眠。不應有恨,何事長向別時圓?人有悲歡離合,月有陰晴圓缺,此事古難全。但愿人長久,千里共嬋娟。”
使用倒排索引操作
但是使用倒排索引,value的內容將會非常的多,所以可以對其進行優化,在value中存儲內容的唯一標識即可。
倒排索引:將各個文檔中的內容,進行分詞,形成詞條。然后記錄詞條和數據的唯一標識(id)的對應關系,形成的產物,查詢時可以根據分好的詞查詢到對應數據的唯一標識,然后查詢到數據。
3.Elasticsearch簡介
官網:Elastic — 搜索 AI 公司 | Elastic
Elasticsearch是一個基于Lucene的搜索服務器引擎(軟件)。它提供了一個分布式多用戶能力的全文搜索引擎(軟件),基于RESTful web接口。Elasticsearch是用Java語言開發的,并作為Apache許可條款下的開放源碼發布,是一種流行的企業級搜索引擎(軟件)。類似的還有solr。
Elastic有一條完整的產品線及解決方案:Elasticsearch、Kibana、Logstash等,前面說的三個就是大家常說的ELK(日志分析)技術棧。(現在稱之為Elastic Stack:ELK Stack:Elasticsearch、Kibana、Beats 和 Logstash | Elastic)
1.Elasticsearch的特點
-
分布式,無需人工搭建集群(天生就是集群的)(solr就需要人為配置,使用Zookeeper作為注冊中心)
-
Restful風格,一切API都遵循Rest原則,容易上手
-
近實時搜索,數據更新在Elasticsearch中幾乎是完全同步的。(但還是不同步的)
2.應用場景
-
搜索:海量數據的查詢
-
日志數據分析
-
實時數據分析
擴展:solr和Elasticsearch的區別:
-
es基本是開箱即用,非常簡單。Solr安裝略微復雜一丟丟
-
Solr 利用 Zookeeper 進行分布式管理,而 Elasticsearch 自身帶有分布式協調管理功能。
-
Solr 支持更多格式的數據,比如JSON、XML、CSV,而 Elasticsearch 僅支持json文件格式。
-
Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高級功能多有第三方插件提供,例如圖形化界面需要kibana友好支撐
-
Solr 查詢快,但更新索引時慢(即插入刪除慢),用于電商等查詢多的應用;
ES建立索引慢,即實時性查詢快,用于facebook、新浪等搜索。
Solr 是傳統搜索應用的有力解決方案,但 Elasticsearch 更適用于新興的實時搜索應用。
-
Solr比較成熟,有一個更大,更成熟的用戶、開發和貢獻者社區,而 Elasticsearch相對開發維護者較少,更新太快,學習使用成本較高。
Elasticsearch和Mysql的分工:
Elasticsearch:主要負責大數據量的查操作。
Mysql:主要負責增、刪、改、少量數據的查操作。
3.ElasticSearch數據的存儲和搜索原理
數據存儲原理
搜索原理
Elasticsearch是一個開源的分布式搜索和分析引擎,用于存儲、檢索和分析海量數據。下面是Elasticsearch版本5、6和7之間的主要區別:
-
功能增強:每個新的Elasticsearch版本都引入了新的功能和改進。例如,Elasticsearch 6引入了一種新的分布式均衡策略,以提高集群的性能和穩定性。Elasticsearch 7引入了Elasticsearch警報和報告功能,還改進了安全性功能。
-
性能優化:隨著每個版本的發布,Elasticsearch致力于改進性能和吞吐量。例如,Elasticsearch 5引入了更好的字段數據類型和聚合性能,Elasticsearch 6引入了更高效的搜索和索引算法,而Elasticsearch 7進一步提升了性能,并改進了索引和搜索速度。
-
安全性增強:Elasticsearch在每個版本中都加強了安全性。例如,Elasticsearch 5引入了內置的X-Pack安全功能,用于身份驗證和訪問控制。Elasticsearch 6引入了TLS加密和重要配置更改,Elasticsearch 7引入了更強大的角色和權限管理。
-
API更改:每個版本中的Elasticsearch API可能會有一些細微的更改或調整。這可能需要更新現有的應用程序代碼以適應新的API。因此,在升級Elasticsearch版本時,需要仔細閱讀版本發布說明和文檔,以了解API的變更情況。
-
兼容性:由于不同版本之間的API和功能變化,升級Elasticsearch版本可能需要進行一些工作。尤其是從較舊的版本升級到較新的版本時,需要進行徹底的測試和計劃。
總的來說,隨著每個新版本的發布,Elasticsearch不斷改進其功能、性能和安全性。因此,了解每個版本的變化對于確定升級策略和利用新功能非常重要。在進行升級之前,建議查閱Elasticsearch的官方文檔,并根據特定的用例和需求評估哪個版本最適合你的環境。
二、Elasticsearch(ES)安裝?
1、拉取鏡像
docker pull elasticsearch:7.4.0
查看鏡像
2、創建目錄并給目錄賦權
?3、創建并編輯配置文件
?寫入以下內容
#可訪問IPhttp.host: 0.0.0.0# 跨域http.cors.enabled: truehttp.cors.allow-origin: "*"
?startEs.sh
寫入以下內容?
?docker run --name es-7.4.0 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx256m" \
-v /usr/local/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/docker/es/data:/usr/share/elasticsearch/data \
-v /usr/local/docker/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.0
?給配置文件賦權
4、 開放防火墻端口9200、9300
5、開放服務器端口
6、啟動ES
?
三、安裝Kibana
1、準備工作
cd /usr/local/docker/
mkdir kibana
cd kibana/
mkdir config
cd config/
2、創建配置和腳本
vim kibana.yml
# 主機地址,可以是ip,主機名server.host: 0.0.0.0# 提供服務的端口,監聽端口server.port: 5601# kibana訪問es服務器的URL,就可以有多個,以逗號","隔開elasticsearch.hosts: [ "http://服務器ip:9200" ]
cd ../
vim startKibana.sh
docker run -d \
? --name kibana-7.4.0 \
? --restart=always \
? -p 5601:5601 \
? -e TZ="Asia/Shanghai" \
? -v /usr/local/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
? kibana:7.4.0
chmod -R 700 startKibana.sh

./startKibana.sh
docker ps
3、服務器放端口訪問

5601
?
四、安裝ik分詞器
1、安裝包解壓和刪除安裝包
?
安裝解壓工具
?
?解壓縮zip文件
刪除zip安裝包
?2、重啟es
查看是否重啟成功