ES入門及安裝軟體

  • 2021 年 1 月 27 日
  • 筆記

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=//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 "//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.文檔操作

最初打算自己做一些關於文檔操作的案例的,但是發現在官網文檔上有很詳細的說明,那就貼出官網的地址吧:

//www.elastic.co/guide/en/elasticsearch/reference/current/index.html

6.使用java程式碼操作es

這裡我就不貼出自己的程式碼了,下面這位老哥的程式碼,親測有效:

//blog.csdn.net/b15735105314/article/details/112300222

Tags: