Elasticsearch學習筆記

許多年前,一個剛結婚的名叫 Shay Banon 的失業開發者,跟著他的妻子去了倫敦,他的妻子在那裡學習廚師。 在尋找一個賺錢的工作的時候,為了給他的妻子做一個食譜搜索引擎,他開始使用 Lucene 的一個早期版本。

直接使用 Lucene 是很難的,因此 Shay 開始做一個抽象層,Java 開發者使用它可以很簡單的給他們的程式添加搜索功能。 他發布了他的第一個開源項目 Compass。

後來 Shay 獲得了一份工作,主要是高性能,分散式環境下的記憶體數據網格。這個對於高性能,實時,分散式搜索引擎的需求尤為突出, 他決定重寫 Compass,把它變為一個獨立的服務並取名 Elasticsearch。

第一個公開版本在2010年2月發布,從此以後,Elasticsearch 已經成為了 Github 上最活躍的項目之一,他擁有超過300名 contributors(目前736名 contributors )。 一家公司已經開始圍繞 Elasticsearch 提供商業服務,並開發新的特性,但是,Elasticsearch 將永遠開源並對所有人可用。

據說,Shay 的妻子還在等著她的食譜搜索引擎…​

Elasticsearch是Java開發的基於Lucene的搜索伺服器。它提供了一個分散式多用戶能力的全文搜索引擎,基於RESTful web介面。

Elasticsearch的作用:1.存放海量數據。

                    2.實現快速查詢。

                    3.實現高亮查詢。 

                    4.支援模糊、精確查詢。

Elasticsearch的使用場景:1.elk的日誌場景。

                       2.業務(海量)數據的搜索。

說到Elasticsearch必須提到ELK

E:Elasticsearch  存放數據的倉庫
L:LogStach 幫助我們收集各種情況下的日誌(文本日誌、資料庫日誌) 把數據寫入我們的es資料庫
K:Kinbana  可視化工具,可以查看報表以及通過搜索查看我們資料庫所有的數據

下載地址:

 下載完成之後雙擊各自bin目錄下的bat文件

 基本操作:

1.需要指定id

PUT dbindex/userinfo/1

2.自動生成id

POST dbindex/userinfo

3.代表文檔的id

GET dbindex/userinfo/1

4.查看所有數據

GET dbindex/userinfo/_search

5.刪除索引(資料庫)

DELETE dbndex

創建索引,指定數據的數據類型.如果給欄位的類型是keyword類型,則相當於服務沒有幫助我們去分詞,相當於自己創建了一個字典。如果是text類型則會幫助我們分詞。

 通過關鍵字查詢數據:

 

GET /secound/_doc/_search?q=name:貓

ik分詞器 

 如上,elasticsearch的默認分詞器無法識別中文中”一隻”這樣的辭彙,而是簡單的將每個字拆完分為一個詞。我們可以使用第三方分詞器達到我們想要的效果。

下載ik分詞器包

解壓文件,將elasticsearch-analysis-ik文件中的文件拷貝到elasticsearch文件下的plugins文件中(一定要在plugins中新建一個ik命名的文件,ik分詞器的版本和elasticsearch的版本一定要一樣)

建一個自定義分詞的字典文件,並做好配置,然後重啟elasticsearch.

 我在我的字典文件(data.dic)中寫了:一隻橘貓

查詢:

 

k_max_word:會將文本做最細粒度的拆分,例如「一隻橘貓」會被拆分為「一隻橘貓、一隻、一、只、橘、貓」,會窮盡各種可能的組合
ik_smart:會將文本做最粗粒度的拆分,例如「一隻橘貓」會被拆分為「一隻橘貓」

有一首歌叫南方姑娘很好聽,我們可以先用elasticsearch的默認分詞器查查看。

 將南方姑娘加入我們自定義的分詞字典文件中,再來查詢:

.

 

elasticsearch的倒排索引

有一張表還有如下數據

首先說一下正排索引:正排索引就是我們可以根據id查詢指定的數據,也可理解為通過人名(在不重複的情況下)找到指定的人。

倒排索引:如下.不同的條件查詢的數據不同。

 在elasticsearch中也一樣,elasticsearch會建倒排索引。將每一行數據看成為一個document。每個document都有一個docid。那麼給這些document建立的倒排索引就是:

姓名
[key]     [value]
橘貓       [1,2]
花貓       [3]

年齡
[key]      [value]
17         [1,2]
18         [3]

 Winking Face on Microsoft Windows 10 May 2019 Update