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,啟動後開啟瀏覽器,輸入
可以看到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載入成功(如果路徑錯了的話會閃退)。