elasticsearch看這一篇就夠了---入門(1)Elasticsearch&Kibana概念詳解,下載安裝使用

1. 是什麼?

在這裏插入圖片描述
(1)Elasticsearch是一個基於Apache Lucene™的開源搜索引擎。無論在開源還是專有領域,Lucene可以被認爲是迄今爲止最 先進、性能最好的、功能最全的搜索引擎庫
(2)Elasticsearch也使用Java開發並使用Lucene作爲其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的 RESTful API 來隱藏Lucene的複雜性,從而讓全文搜索變得簡單
總之一句話,它很牛,也很複雜,但是他對外隱藏了這些內部實現,用它還是很簡單滴!

到這裏就有小夥伴有疑問了,不就一個搜索呀?好像用sql語句查詢也可呀,爲什麼要用這個東西呢?
聽我娓娓道來

在這裏插入圖片描述

2. 建立一個員工目錄

爲了方便理解,需要帶入一個場景中,以下都以這個場景爲主,這樣更好理解!
場景:假設我們剛好在阿里BaBa工作(人還是要有夢想的,當然夢裏想想就可以了),這時人力資源部門出於某種目的需要讓我們創建一個員工目錄,這個目錄 用於促進人文關 懷和用於實時協同工作,所以它有以下不同的需求:

  • 數據能夠包含多個值的標籤、數字和純文本。
  • 檢索任何員工的所有信息。
  • 支持結構化搜索,
  • 例如查找30歲以上的員工。
  • 支持簡單的全文搜索和更復雜的短語(phrase)搜索 高亮搜索結果中的關鍵字
  • 能夠利用圖表管理分析這些數據

這些有些可以通過sql語句做到,但是很消耗時間(全文搜索),有些比較麻煩,比如高亮關鍵字,圖表分析
然後我們來看看Elasticsearch是怎麼做的呢?

我們首先要做的是存儲員工數據,每個文檔代表一個員工。在Elasticsearch中存儲數據的行爲就叫做索引(indexing),不過 在索引之前,我們需要明確數據應該存儲在哪裏。 在Elasticsearch中,文檔歸屬於一種類型(type),而這些類型存在於索引(index)中,我們可以畫一些簡單的對比圖來類比傳統 關係型數據庫:

Relational DB -> Databases -> Tables -> Rows -> Columns 
Elasticsearch -> Indices -> Types -> Documents -> Fields

Elasticsearch集羣可以包含多個索引(indices)(數據庫),每一個索引可以包含多個類型(types)(表),每一個類型包含多 個文檔(documents)(行),然後每個文檔包含多個字段(Fields)(列)。

記住只是類比,不能概念相等

所以爲了創建員工目錄,我們將進行如下操作:

  • 爲每個員工的文檔(document)建立索引,每個文檔包含了相應員工的所有信息。
  • 每個文檔的類型爲 employee
  • employee 類型歸屬於索引 albb
  • albb索引存儲在Elasticsearch集羣中。

實際上這些都是很容易的(儘管看起來有許多步驟)。我們能通過一個命令執行完成的操作:
(沒安裝ElasticsearchElasticsearch下載安裝使用教程,,以下代碼是在Kibana中執行的,下載就可以使用Kibana下載安裝使用教程

PUT /albb/employee/1 
{
  "first_name" : "John", 
  "last_name" : "Smith", 
  "age" : 25,
  "about" :  "I love to go rock climbing", 
  "interests": [ "sports", "music" ]
}

我們看到path: /albb/employee/1 包含三部分信息:

名字 說明
albb 索引名
employee 類型名
1 這個員工的Id

請求實體(JSON文檔),包含了這個員工的所有信息。他的名字叫“John Smith”,25歲,喜歡攀巖。

很簡單吧!它不需要你做額外的管理操作,比如創建索引或者定義每個字段的數據類型。我們能夠直接索引文檔, Elasticsearch已經內置所有的缺省設置,所有管理操作都是透明的。

接下來,讓我們在目錄中加入更多員工信息:

PUT /albb/employee/2
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32, 
"about" : "I like to collect rock albums", 
"interests": [ "music" ]
}

PUT /albb/employee/3
{
"first_name" : "Douglas",
"last_name" : "Fir", 
"age" : 35,
"about": "I like to build cabinets", 
"interests": [ "forestry" ]
}

好了,現在我們終於有了一些數據,可以以此開始學習搜索了,是不是很簡單呢?

寫作不易,你們的支持我繼續創作的動力!喜歡的話給我點個贊,關注一波吧!

下一篇 講述如何使用這些數據進行搜索得到結果

elasticsearch看這一篇就夠了—入門(2)Elasticsearch檢索文檔,DSL語句查詢,複雜查詢,全文搜索
在這裏插入圖片描述在這裏插入圖片描述

發佈了28 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章