Elasticsearch,簡稱es,是一款高擴展的分佈式全文檢索引擎。它能夠近乎實時的存儲,檢索數據。es是面向文檔型的數據庫,一條數據就是一個文檔,用json作爲文檔序列化的格式。es是基於java開發的並使用lucene做爲核心來實現全部的索引和搜索功能,將對搜索引擎的操做都封裝成restful的api,使用http請求就能對其進行操做。html
es的優勢:java
這裏筆者使用的是es7.X,es6和es7的差異仍是挺大的,以下:node
要求:jdk1.8以上,最低要求1.8。es6
我這裏是安裝的windows版本的,es的安裝很是簡單,開箱即用。若是須要文件,請留言郵箱。算法
1.若是電腦性能不是很好,能夠修改config下的jvm.options中的22行~23行:數據庫
-Xms1g -Xmx1g
由於個人電腦性能不是很好,因此我就改爲了256M。npm
2.解決跨域,用於後面可視化界面和後臺的鏈接。json
config下的elasticsearch.yml文件末尾添加:windows
http.cors.enabled: true http.cors.allow-origin: "*"
3.啓動,bin目錄下的elasticsearch.bat,雙擊便可啓動。api
4.訪問:
5.安裝可視化界面(head)
head插件依賴於node.js。因此必需要安裝node.js。
head插件基於grunt和http通訊。
安裝依賴:
# 在elasticsearch-head-master目錄下安裝淘寶鏡像 npm install -g cnpm --registry=https://registry.npm.taobao.org # 安裝完cnpm以後執行 cnpm install # 啓動head插件命令 npm run start
訪問:localhsot:9100
圖中綠色的表示數據塊。
6.安裝kibana
kibana也是基於node的。
啓動:kibana-7.6.1-windows-x86_64\bin目錄下的kibana.bat的文件雙擊啓動。
訪問:localhost:5601
從上圖中能夠看到,kibana是英文版的,漢化:
kibana-7.6.1-windows-x86_64\config下最後一行添加:
i18n.locale: "zh-CN"
重啓以後再此訪問,就全是中文版的了。
索引(index):索引是組織數據的邏輯命名空間,是存放數據的地方,能夠理解爲數據庫。
類型(type):定義數據結構的,能夠理解爲數據庫的一張表。
文檔(document):數據(一個文檔就是一條數據),能夠理解爲數據庫的行數據。
倒排索引:一個倒排索引有文檔中全部不重複詞的列表構成,使用與快速的全文檢索。能夠理解爲數據庫經過增長一個索引(好比一個 B樹(B-tree))索引 到指定的列上,以便提高數據檢索速度。在es中,每一個字段的全部數據都是默認被索引的,即每一個字段都有爲了快速檢索設置的專門的倒排索引。同時能在同一個查詢中使用全部的倒排索引。
1.物理設計:
es在後臺把每一個索引劃分紅多個分片,每一個分片能夠在集羣中的不一樣服務器間遷移,由於es通常狀況下都會搭建集羣,固然單機也是集羣。
2.邏輯設計:
一個索引類型中,包含多個文檔。有多個文檔的話,就能夠去查找對應得信息,當索引一篇文檔時,能夠經過這樣得一個順序找到它:索引>類型>文檔ID(對應數據庫位:數據庫>表>行),經過這個組合就能找到對應得某個具體的文檔。
將elasticsearch-analysis-ik-7.6.1這個文件解壓縮,而後放到es的elasticsearch-7.6.1\plugins下,如圖:
而後重啓es,能夠看到ik分詞器的插件。
IK分詞器提供了兩個分詞算法:ik_smart(最少切分) ik_max_word(最細粒度劃分);
測試:
我在這裏使用「塘朗變電站」測試,能夠看到,ik分詞器將「塘」,「朗」看成一個詞,將「變電站」看成一個詞。若是咱們想將塘朗看成一個詞,那麼就須要自定義配置詞組。
在elasticsearch-7.6.1\plugins\ik\config目錄下,有一個IKAnalyzer.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 擴展配置</comment> <!--用戶能夠在這裏配置本身的擴展字典 在這裏我寫一個本身的字典--> <entry key="ext_dict">charon.dic</entry> <!--用戶能夠在這裏配置本身的擴展中止詞字典--> <entry key="ext_stopwords"></entry> <!--用戶能夠在這裏配置遠程擴展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用戶能夠在這裏配置遠程擴展中止詞字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>
在config目錄下新建一個charon.dic文件,而後在裏面新增塘朗。而後就能夠看到,配置以後就將「塘朗」變成一個詞了。
最初打算本身作一些關於文檔操做的案例的,可是發如今官網文檔上有很詳細的說明,那就貼出官網的地址吧:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
這裏我就不貼出本身的代碼了,下面這位老哥的代碼,親測有效:
https://blog.csdn.net/b15735105314/article/details/112300222