没错,你离分布式搜索只差一个Elasticsearch入门!
來源 | 沉默王二
責編 | Carol
封圖 |?CSDN 付費下載自視覺中國
學習真的是一件令人開心的事情,上次分享了Redis 入門的文章后,收到了很多小伙伴的鼓勵,比如說:“哎呀,不錯呀,通俗易懂,十分鐘真的入門了”。瞅瞅,瞅瞅,我決定再接再厲,入門一下 Elasticsearch,因為我們公司的商城系統升級了,需要用 Elasticsearch 做商品的搜索。
不過,我首先要聲明一點,我對 Elasticsearch 并沒有進行很深入的研究,僅僅是因為要用,就學一下。但作為一名負責任的技術博主,我是用心的,為此還特意在某某時間上買了一門視頻課程,作者叫阮一鳴。說實話,他光禿禿的頭頂讓我對這門課程產生了濃厚的興趣。
Elasticsearch 是什么
Elasticsearch 是一個分布式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例。作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。
以上引用來自于官方,不得不說,解釋得蠻文藝的。意料之中和意料之外,這兩個詞讓我想起來了某一年的高考作文題(情理之中和意料之外)。
Elastic Stack 又是什么呢?整個架構圖如下圖(來源于網絡,侵刪)所示。
信息量比較多,對吧?那就記住一句話吧,Elasticsearch 是 Elastic Stack 的核心。
國內外的很多知名公司都在用 Elasticsearch,比如說滴滴、骨骼、微軟等等。Elasticsearch 有很多強大的功能,比如說全文搜索、購物推薦、附近定位推薦等等。
理論方面的內容就不說太多了,我怕小伙伴們會感到枯燥。畢竟入門嘛,實戰才重要。
安裝 Elasticsearch
Elasticsearch 是由 Java 開發的,所以早期的版本需要先在電腦上安裝 JDK 進行支持。后來的版本中內置了 Java 環境,所以直接下載就行了。Elasticsearch 針對不同的操作系統有不同的安裝包,我們這篇入門的文章就以 Windows 為例吧。
下載地址如下:
https://www.elastic.co/cn/downloads/elasticsearch
最新的版本是 7.6.2,280M 左右。但我硬生生花了 10 分鐘的時間才下載完畢,不知道是不是連通的 200M 帶寬不給力,還是官網本身下載的速度就慢,反正我去洗了 6 顆葡萄吃完后還沒下載完。
Elasticsearch 是免安裝的,只需要把 zip 包解壓就可以了。
1)bin 目錄下是一些腳本文件,包括 Elasticsearch 的啟動執行文件。
2)config 目錄下是一些配置文件。
3)jdk 目錄下是內置的 Java 運行環境。
4)lib 目錄下是一些 Java 類庫文件。
5)logs 目錄下會生成一些日志文件。
6)modules 目錄下是一些 Elasticsearch 的模塊。
7)plugins 目錄下可以放一些 Elasticsearch 的插件。
直接雙擊 bin 目錄下的 elasticsearch.bat 文件就可以啟動 Elasticsearch 服務了。
輸出的日志信息有點多,不用細看,注意看到有“started”的字樣就表明啟動成功了。為了進一步確認 Elasticsearch 有沒有啟動成功,可以在瀏覽器的地址欄里輸入?http://localhost:9200?進行查看(9200 是 Elasticsearch 的默認端口號)。
你看,為了 Search。
那如何停止服務呢?可以直接按下?Ctrl+C?組合鍵——粗暴、壁咚。
安裝 Kibana
通過 Kibana,我們可以對 Elasticsearch 服務進行可視化操作,就像在 Linux 操作系統下安裝一個圖形化界面一樣。
下載地址如下:
https://www.elastic.co/cn/downloads/kibana
最新的版本是 7.6.2,284M 左右,體積和 Elasticsearch 差不多。選擇下載 Windows 版,zip 格式的,完成后直接解壓就行了。下載的過程中又去洗了 6 顆葡萄吃,狗頭。
包目錄不再一一解釋了,進入 bin 目錄下,雙擊運行 kibana.bat 文件,啟動 Kibana 服務。整個過程比 Elasticsearch 要慢一些,當看到?[Kibana][http] http server running?的信息后,說明服務啟動成功了。
在瀏覽器地址欄輸入?http://localhost:5601?查看 Kibana 的圖形化界面。
由于當前的 Elasticsearch 服務端中還沒有任何數據,所以我們可以選擇「Try Our Sample Data」導入 Kibana 提供的模擬數據體驗一下。下圖是導入電商數據庫的看板頁面,是不是很豐富?
打開 Dev Tools 面板,可以看到一個簡單的 DSL 查詢語句(一種完全基于 JSON 的特定于領域的語言),點擊「運行」按鈕后就可以看到 JSON 格式的數據了。
Elasticsearch 的關鍵概念
在進行下一步之前,需要先來理解 Elasticsearch 中的幾個關鍵概念,比如說什么是索引,什么是類型,什么是文檔等等。Elasticsearch 既然是一個數據引擎,它里面的一些概念就和 MySQL 有一定的關系。
看完上面這幅圖(來源于網絡,侵刪),是不是瞬間就清晰了。向 Elasticsearch 中存儲數據,其實就是向 Elasticsearch 中的 index 下面的 type 中存儲 JSON 類型的數據。
在 Java 中使用 Elasticsearch
有些小伙伴可能會問,“二哥,我是一名 Java 程序員,我該如何在 Java 中使用 Elasticsearch 呢?”這個問題問得好,這就來,這就來。
Elasticsearch 既然內置了 Java 運行環境,自然就提供了一系列 API 供我們操作。
第一步,在項目中添加 Elasticsearch 客戶端依賴:
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.6.2</version> </dependency>第二步,新建測試類 ElasticsearchTest:
public?class?ElasticsearchTest?{public?static?void?main(String[]?args)?throws?IOException?{RestHighLevelClient?client?=?new?RestHighLevelClient(RestClient.builder(new?HttpHost("localhost",?9200,?"http")));IndexRequest?indexRequest?=?new?IndexRequest("writer").id("1").source("name",?"沉默王二","age",?18,"memo",?"一枚有趣的程序員");IndexResponse?indexResponse?=?client.index(indexRequest,?RequestOptions.DEFAULT);GetRequest?getRequest?=?new?GetRequest("writer",?"1");GetResponse?getResponse?=?client.get(getRequest,?RequestOptions.DEFAULT);String?sourceAsString?=?getResponse.getSourceAsString();System.out.println(sourceAsString);client.close();} }1)RestHighLevelClient 為 Elasticsearch 提供的 REST 客戶端,可以通過 HTTP 的形式連接到 Elasticsearch 服務器,參數為主機名和端口號。
有了 RestHighLevelClient 客戶端,我們就可以向 Elasticsearch 服務器端發送請求并獲取響應。
2)IndexRequest 用于向 Elasticsearch 服務器端添加一個索引,參數為索引關鍵字,比如說“writer”,還可以指定 id。通過 source 的方式可以向當前索引中添加文檔數據源(鍵值對的形式)。
有了 IndexRequest 對象后,可以調用客戶端的?index()?方法向 Elasticsearch 服務器添加索引。
3)GetRequest 用于向 Elasticsearch 服務器端發送一個 get 請求,參數為索引關鍵字,以及 id。
有了 GetRequest 對象后,可以調用客戶端的?get()?方法向 Elasticsearch 服務器獲取索引。getSourceAsString()?用于從響應中獲取文檔數據源(JSON 字符串的形式)。
好了,來看一下程序的輸出結果:
{"name":"沉默王二","age":18,"memo":"一枚有趣的程序員"}完全符合我們的預期,perfect!
也可以通過 Kibana 的 Dev Tools 面板查看“writer”索引,結果如下圖所示。
好了,我親愛的小伙伴們,以上就是本文的全部內容了,是不是看完后很想實操一把 Elasticsearch,趕快行動吧!如果你在學習的過程中遇到了問題,歡迎隨時和我交流,雖然我也是個菜鳥,但我有熱情啊。
另外,如果小伙伴想寫入門級別的文章,這篇就是最好的范例。
推薦閱讀實操來了!一文告訴你如何用 Streamlit 和 Heroku 開發 Web
避坑!使用 Kubernetes 最易犯的 10 個錯誤
雷軍:4G 手機已清倉,全力轉 5G;QQ音樂播放中途插語音廣告引熱議;Wine 5.9 發布 | 極客頭條
15 歲黑進系統,發挑釁郵件意外獲 Offer,不惑之年捐出全部財產,Twitter CEO 太牛了!
必讀!53個Python經典面試題詳解
贈書 | 1月以來 Tether 增發47億 USDT,美元都去哪兒了?
真香,朕在看了!
總結
以上是生活随笔為你收集整理的没错,你离分布式搜索只差一个Elasticsearch入门!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算管理工具:根植热土
- 下一篇: 重磅 | 边缘计算核心技术辨析