es介紹
Elasticsearch,簡稱es,是一款高擴展的分布式全文檢索引擎,它可以近乎實時的存盤,檢索資料,es是面向檔案型的資料庫,一條資料就是一個檔案,用json做為檔案序列化的格式,es是基于java開發的并使用lucene作為核心來實作所有的索引和搜索功能,將對搜索引擎的操作都封裝成restful的api,使用http請求就能對其進行操作,
es的優點:
- 分布式實時檔案存盤,并將每一個欄位都編入索引,使其可以被搜索
- 實時分析的分布式搜索引擎
- 可以擴展到上百臺服務器,處理PB級別的結構化或非結構化資料
這里筆者使用的是es7.X,es6和es7的差別還是挺大的,如下:

2.es安裝
要求:jdk1.8以上,最低要求1.8,
我這里是安裝的windows版本的,es的安裝非常簡單,開箱即用,如果需要檔案,請留言郵箱,

1.如果電腦性能不是很好,可以修改config下的jvm.options中的22行~23行:
-Xms1g
-Xmx1g
因為我的電腦性能不是很好,所以我就改成了256M,
2.解決跨域,用于后面可視化界面和后臺的連接,
config下的elasticsearch.yml檔案末尾添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
3.啟動,bin目錄下的elasticsearch.bat,雙擊即可啟動,

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"
重啟之后再此訪問,就全是中文版的了,
3.es核心概念
索引(index):索引是組織資料的邏輯命名空間,是存放資料的地方,可以理解為資料庫,
型別(type):定義資料結構的,可以理解為資料庫的一張表,
檔案(document):資料(一個檔案就是一條資料),可以理解為資料庫的行資料,
倒排索引:一個倒排索引有檔案中所有不重復詞的串列構成,使用與快速的全文檢索,可以理解為資料庫通過增加一個索引(比如一個 B樹(B-tree))索引 到指定的列上,以便提升資料檢索速度,在es中,每個欄位的所有資料都是默認被索引的,即每個欄位都有為了快速檢索設定的專門的倒排索引,同時能在同一個查詢中使用所有的倒排索引,
1.物理設計:
es在后臺把每個索引劃分成多個分片,每個分片可以在集群中的不同服務器間遷移,因為es一般情況下都會搭建集群,當然單機也是集群,
2.邏輯設計:
一個索引型別中,包含多個檔案,有多個檔案的話,就可以去查找對應得資訊,當索引一篇檔案時,可以通過這樣得一個順序找到它:索引>型別>檔案ID(對應資料庫位:資料庫>表>行),通過這個組合就能找到對應得某個具體的檔案,
4.ik分詞器
將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檔案,然后在里面新增塘朗,然后就可以看到,配置之后就將“塘朗”變成一個詞了,

5.檔案操作
最初打算自己做一些關于檔案操作的案例的,但是發現在官網檔案上有很詳細的說明,那就貼出官網的地址吧:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

6.使用java代碼操作es
這里我就不貼出自己的代碼了,下面這位老哥的代碼,親測有效:
https://blog.csdn.net/b15735105314/article/details/112300222
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253386.html
標籤:Java
