Elasticsearch(ES)介紹和安裝

目錄

一、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之間的主要區別:

  1. 功能增強:每個新的Elasticsearch版本都引入了新的功能和改進。例如,Elasticsearch 6引入了一種新的分布式均衡策略,以提高集群的性能和穩定性。Elasticsearch 7引入了Elasticsearch警報和報告功能,還改進了安全性功能。

  2. 性能優化:隨著每個版本的發布,Elasticsearch致力于改進性能和吞吐量。例如,Elasticsearch 5引入了更好的字段數據類型和聚合性能,Elasticsearch 6引入了更高效的搜索和索引算法,而Elasticsearch 7進一步提升了性能,并改進了索引和搜索速度。

  3. 安全性增強:Elasticsearch在每個版本中都加強了安全性。例如,Elasticsearch 5引入了內置的X-Pack安全功能,用于身份驗證和訪問控制。Elasticsearch 6引入了TLS加密和重要配置更改,Elasticsearch 7引入了更強大的角色和權限管理。

  4. API更改:每個版本中的Elasticsearch API可能會有一些細微的更改或調整。這可能需要更新現有的應用程序代碼以適應新的API。因此,在升級Elasticsearch版本時,需要仔細閱讀版本發布說明和文檔,以了解API的變更情況。

  5. 兼容性:由于不同版本之間的API和功能變化,升級Elasticsearch版本可能需要進行一些工作。尤其是從較舊的版本升級到較新的版本時,需要進行徹底的測試和計劃。

總的來說,隨著每個新版本的發布,Elasticsearch不斷改進其功能、性能和安全性。因此,了解每個版本的變化對于確定升級策略和利用新功能非常重要。在進行升級之前,建議查閱Elasticsearch的官方文檔,并根據特定的用例和需求評估哪個版本最適合你的環境。

二、Elasticsearch(ES)安裝?

1、拉取鏡像

docker pull elasticsearch:7.4.0

查看鏡像

2、創建目錄并給目錄賦權

?3、創建并編輯配置文件

elasticsearch.yml

?寫入以下內容

#可訪問IP
http.host: 0.0.0.0
# 跨域
http.cors.enabled: true
http.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、準備工作

(1).打開指定目錄
cd /usr/local/docker/
(2).創建Kibana目錄
mkdir kibana
(3).進入Kibana目錄
cd kibana/
(4).創建config掛載目錄
mkdir config
(5)進入config目錄
cd config/

2、創建配置和腳本

創建配置
(1).創建文件
vim kibana.yml
(2).編寫配置
# 主機地址,可以是ip,主機名
server.host: 0.0.0.0
# 提供服務的端口,監聽端口
server.port: 5601
# kibana訪問es服務器的URL,就可以有多個,以逗號","隔開
elasticsearch.hosts: [ "http://服務器ip:9200" ]
創建腳本
(1).返回config目錄
cd ../
(2).創建腳本文件
vim startKibana.sh
(3).添加腳本內容
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
(4).腳本賦權
chmod -R 700 startKibana.sh
(5).啟動腳本
./startKibana.sh
(6).使用命令查詢
docker ps

3、服務器放端口訪問

5601

?

四、安裝ik分詞器

1、安裝包解壓和刪除安裝包

?

安裝解壓工具

?

?解壓縮zip文件

刪除zip安裝包

?2、重啟es

查看是否重啟成功

3、 測試ik分詞庫是否成功

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

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

相關文章

html結構解析

<!DOCTYPE html>&#xff1a;聲明為 HTML5 文檔 <html lang"zh-CN">&#xff1a;根元素&#xff0c;指定頁面語言為中文 <meta charset"UTF-8">&#xff1a;設置字符編碼&#xff0c;確保中文正常顯示 <meta name"viewport"…

面試150 最大子數組和

思路 貪心法&#xff1a;設定最小標志result為float(‘-inf’),遍歷一次數組元素進行求和&#xff0c;如果當前元素大于result&#xff0c;則更新result的值&#xff0c;如果sum小于0&#xff0c;則重新置0進行計算&#xff0c;最后返回result class Solution:def maxSubArray(…

MyBatis動態SQL實戰:告別硬編碼,擁抱智能SQL生成

MyBatis動態SQL實戰&#xff1a;告別硬編碼&#xff0c;擁抱智能SQL生成在電商平臺的用戶管理模塊中&#xff0c;需要面對多種不同的用戶查詢組合條件。當使用傳統的硬編碼SQL方式時&#xff0c;代碼膨脹到了2000多行&#xff0c;維護成本極高。而引入MyBatis動態SQL后&#xf…

Web前端開發:JavaScript遍歷方法詳解與對比

1. 傳統 for 循環const arr [10, 20, 30]; for (let i 0; i < arr.length; i) {console.log(索引 ${i}: 值 ${arr[i]}); } // 輸出&#xff1a; // 索引 0: 值 10 // 索引 1: 值 20 // 索引 2: 值 30特點&#xff1a;最基礎的循環&#xff0c;可通過索引精準控制適用場景&…

Python 爬蟲(一):爬蟲偽裝

目錄 1 簡介2 偽裝策略 2.1 Request Headers 問題2.2 IP 限制問題 3 總結 1 簡介 對于一些有一定規模或盈利性質比較強的網站&#xff0c;幾乎都會做一些防爬措施&#xff0c;防爬措施一般來說有兩種&#xff1a;一種是做身份驗證&#xff0c;直接把蟲子擋在了門口&#xff…

TODAY()-WEEKDAY(TODAY(),2)+1

這個Excel公式 TODAY()-WEEKDAY(TODAY(),2)1 用于計算 當前周的周一日期。下面詳細解釋它的邏輯和用法&#xff1a;公式解析TODAY()返回當前日期&#xff08;例如今天是2023年12月20日&#xff0c;則 TODAY() 2023/12/20&#xff09;。WEEKDAY(TODAY(), 2)計算當前日期是星期幾…

Fast Frequency Estimation Algorithm by Least Squares Phase Unwrapping

I. 引言 單個含噪正弦信號的頻率估計是一個研究已久的問題&#xff0c;并有多種應用[1]。在高斯白噪聲假設下&#xff0c;最大似然(ML)頻率估計器是Rife和Boorstyn [2]中提出的周期圖估計器&#xff0c;其中傅里葉變換用于搜索周期圖的最大值。周期圖估計器被廣泛認為是單頻估計…

C語言常見的預定符號常量

C語言常見的預定符號常量C 語言提供了豐富的預定義符號常量&#xff0c;分布在不同頭文件中&#xff0c;用于獲取編譯信息、數值范圍、浮點特性等關鍵信息。以下是常見預定義符號常量的分類總結&#xff1a;一、預定義宏&#xff08;編譯時信息&#xff09;由編譯器自動定義&am…

【2025】使用vue構建一個漂亮的天氣卡片

1. 核心框架&#xff1a;Vue Vue 以其輕量、易用、響應式數據綁定的特點&#xff0c;非常適合快速構建這類小型界面組件。即使是直接通過 CDN 引入&#xff0c;也能高效開發&#xff0c;降低項目復雜度&#xff0c;無需搭建完整工程化環境 。 2. 網絡請求&#xff1a;Axios 用于…

Ruby 命令行選項詳解

Ruby 命令行選項詳解 引言 Ruby 是一種廣泛使用的編程語言,它以其簡潔、優雅和強大的功能而聞名。在 Ruby 的使用過程中,命令行界面(CLI)提供了豐富的選項,可以幫助開發者更高效地與 Ruby 環境交互。本文將詳細解析 Ruby 命令行選項,旨在幫助開發者更好地利用這些工具。…

NLP復習

1.文本預處理 分詞,詞性標注,命名實體識別 1.1分詞:jieba jieba.lcut(content,cut_alltrue) 全模式 jieba.lcut(content,cut_allfalse) 精確模式 jieba.lcut_for_search(content) 搜索引擎模式 lcut和cut的區別:cut返回的是一個生成器Generator,lcut返回的是列表 生成器調…

WEB :實戰演練——從零實現一個交互輪播圖(附源碼)

文章目錄 一、輪播圖整體功能規劃二、HTML結構深度解析三、CSS樣式實現細節1. 定位系統詳解2. 顯示/隱藏機制3. 按鈕交互效果實現4. 純CSS箭頭實現5. 指示器&#xff1a;當前位置可視化 四、JavaScript邏輯深入解析1. 核心變量與DOM獲取2. 圖片切換函數&#xff08;核心邏輯&am…

MCP 協議詳細分析一 initialize ping tools/list tools/call

MCP 協議詳細分析一 &#xff08;initialize ping tools/list tools/call) 本節基于 實現一個 java 的mcp client 調用的 一個python 的mcp server 的日志&#xff0c;完整展示一次典型的 MCP Java SDK 通信流程、工具調用、通知機制與日志記錄&#xff0c;僅包含 echo-simple…

SLAM學習資料記錄

ORB_SLAM2 創建自己的數據集&#xff08;還未使用&#xff09; 【SLAM實戰篇】Ubuntu 20.04版本&#xff08;OpenCV版本4.5.3&#xff09;對于ORB-SLAM2安裝運行&#xff0c;代碼編譯&#xff0c;自己的數據集構造_ubuntu20.04 安裝運行orb_slam2算法-CSDN博客 卡爾曼濾波數據…

用Phi-3 Mini微調實現英文到尤達語翻譯

用Phi-3 Mini微調實現英文到尤達語翻譯 引言 本文將帶你快速上手大模型微調實踐——以微軟的Phi-3 Mini 4K Instruct模型為例&#xff0c;教你如何將其微調為一個能把英文翻譯成"尤達語"&#xff08;《星球大戰》中尤達大師的獨特說話風格&#xff09;的模型。這是一…

AI助力,輕松實現人聲分離伴奏提取

親愛的小伙伴們&#xff01;前段時間&#xff0c;有一位同事家的可愛小孩參加了一場英語演講比賽。同事找到我&#xff0c;希望我能幫個忙&#xff0c;把講視頻中的人聲去掉&#xff0c;只提取出其中相應的伴奏。今天&#xff0c;我就來和大家分享一下究竟如何實現從 MP4 視頻中…

第1章第2章筆記

OSI參考模型---開放式系統互聯模型---OSI/RM ISO--->國際標準化組織&#xff1b;特點&#xff1a;先有模型&#xff0c;在又協議。 OSI七層參考模型&#xff1a;應用層 --- 提供網絡服務&#xff1b;自然語言-->編碼表示層 --- 對數據的處理&#xff1b;格式化&#xff0…

圖的BFS和DFS

一&#xff0c;圖的遍歷邏輯1.之前我們學了圖的存儲&#xff0c;可以鄰接表存和鄰接矩陣存。現在我們要學習圖的遍歷操作和樹類似可以分為深度遍歷和廣度遍歷&#xff0c;而深度遍歷也是用遞歸實現&#xff0c;廣度遍歷是用隊列實現2.深度遍歷(DFS)a.確定起點b.找到一條邊按順時…

WWDC 25 給自定義 SwiftUI 視圖穿上“玻璃外衣”:最新 Liquid Glass 皮膚詳解

引子 各位 iOS 足球體育健兒們&#xff0c;且聽我一言&#xff01;想當年在《少林足球》里&#xff0c;阿星一句“做人如果沒夢想&#xff0c;那跟咸魚有什么分別啊&#xff1f;”點燃了多少人的江湖夢。 如今在 SwiftUI 江湖里&#xff0c;Apple 于 WWDC 25 推出的 Liquid Gl…

Day01_C++

01.思維導圖02.方法一&#xff1a;#include <iostream> #include <cstring> #include <iostream> using namespace std; class mystring { private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr)…