1. 程式人生 > WINDOWS開發 >ElasticSearch 安裝與配置 (windows)

ElasticSearch 安裝與配置 (windows)

新工作需要所以開始學一下。。。

elasticsearch的概念和基本原理:

elasticsearch是一個類似於nosql資料庫的東西,基於Lucene,以json格式儲存資料,採用了倒序索引(也叫反向索引),主要用於資訊抓取(我的感覺就是字串查詢),所以主要應用在搜尋引擎和自然語言處理方面。

比如有30篇文章,我想找一個字串出現的位置,普通情況我們要全文搜尋,而elasticsearch在儲存時,會先把文章分詞,然後儲存各個關鍵詞出現的位置。這種就是倒序索引(說實話我覺得和普通索引原理差不多,差別有點微妙)。

然後採用壓縮技術保證空間的最大利用。

elasticsearch的儲存方法和壓縮技術:

存了10篇文章,其中第1,3,5,9裡面有“張三”這個詞出現。

es就會存入:"張三":1,9;

然後壓縮為:"張三":1010100010 (10位2進位制數字,對應出現的文章id,這樣需要存的數字只有一個,比存1,9要節省很多,以此壓縮儲存空間)

上面這個就是5.0之前的壓縮方法:bitmap。

不難想象,這樣儲存需要的空間是線性增長的,比如你需要存6553500個文件,那麼你就需要6553500位的二進位制數字儲存,那麼一個欄位的索引中的一個出現位置就需要接近100 * 2byte的空間來表示,所以之後進行了優化(壓縮套壓縮)

Roarding bitmaps:把上面壓縮後的數字除以65535然後儲存商和餘數。使得結果進一步壓縮。然後儲存為100,0 兩個數字。需要空間減少了99倍。

這樣等於把資料以65535一組分成了很多組。一個索引存的是2,65534,說明這個詞在第2組的第65534篇文章中出現。

技術分享圖片

如果資料量大於4096個值,用bit set存,如果比較少的話,就直接用2bytes存每個值。 (用java語言,就是資料多就用 Set<byte>來增加效率,資料少就直接用 short[])。

系統win7 64

ES的主要儲存方式是json,所以需要能看懂json資料。

1. 下載

https://www.elastic.co/cn/downloads/past-releases

技術分享圖片

選工具和版本,然後下載(網上使用教程很多都是6.2.4,不過我這裡下載的最新版本)。

elasticsearch本質是儲存關鍵詞和出現的位置,英語的句子中單詞是用空格和標點符號分開的,很好分詞。 I am a student。 -> I,am,a,student

但是我們現在處理語言主要針對漢語,所以自帶的分詞器就不好用了,es會預設每個字一個詞,因此需要繫結外掛。

現在主要的中文分詞是用的IK(之前停止更新過一段時間,當時最多支援到elatsicsearc6.4.2,所以當年很多教程安裝elasticsearch的時候選擇了相對早期的6.2.4,然後那些按教程來的教程也都用的6.2.4...)。

不過KI最近貌似又開始更新了,而且更新到了2020.4.1的最新版本,所以這裡我選擇下載elasticsearch的最新版本。

技術分享圖片

下載zip包,這樣就不用安裝了-。-

然後找個資料夾解壓,完成。

2. 執行

執行bin資料夾下的 elasticsearch.bat

技術分享圖片

elasticsearch的繫結埠是9200和9300,啟動後開啟瀏覽器,輸入

http://127.0.0.1:9200/

可以看到json格式的elasticsearch資訊,說明安裝成功

技術分享圖片

3. 新增IK外掛

github: https://github.com/medcl/elasticsearch-analysis-ik/releases

因為是外國伺服器所以可能下載會很慢- -我是網上找了個別人下好的百度盤的

https://www.cnblogs.com/jhtian/p/12688246.html

技術分享圖片

下載後解壓,新建一個資料夾改名analysis-ik (很老的版本是改名ik),然後放到elasticsearch的plugins資料夾下。

技術分享圖片

再次啟動elasticsearch, 看到日誌裡顯示ik載入成功(如果路徑錯了的話會閃退)。

技術分享圖片